博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LintCode/LeetCode] Binary Tree Level Order Traversal I & II
阅读量:6591 次
发布时间:2019-06-24

本文共 2092 字,大约阅读时间需要 6 分钟。

Problem

Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).

For example:

Given binary tree {3,9,20,#,#,15,7},

3   / \  9  20    /  \   15   7

return its level order traversal as:

[  [3],  [9,20],  [15,7]]

Note

用先入先出的Queue。用size标记每一层的结点数目并定向循环。

Solution

class Solution {    public List
> levelOrder(TreeNode root) { List
> res = new ArrayList<>(); if (root == null) return res; Queue
queue = new LinkedList
(); queue.offer(root); while (!queue.isEmpty()) { int size = queue.size(); List
temp = new ArrayList<>(); for (int i = 0; i < size; i++) { TreeNode cur = queue.poll(); if (cur.left != null) queue.offer(cur.left); if (cur.right != null) queue.offer(cur.right); temp.add(cur.val); } res.add(temp);//for traversal II: res.add(0, temp); } return res; }}

DFS

class Solution {    public List
> levelOrder(TreeNode root) { List
> res = new ArrayList<>(); dfs(root, 0, res); return res; } private void dfs(TreeNode root, int level, List
> res) { if (root == null) return; if (level >= res.size()) res.add(new ArrayList
()); //level >= res.size() ---- from 0 >= 0 to initialize res.get(level).add(root.val); dfs(root.left, level+1, res); dfs(root.right, level+1, res); }}
From bottom
public class Solution {    public ArrayList
> levelOrderBottom(TreeNode root) { ArrayList
> res = new ArrayList<>(); if (root == null) return res; helper(root, res, 0); return res; } public void helper(TreeNode root, ArrayList
> res, int index) { int size = res.size(); if (index == size) { ArrayList
curList = new ArrayList<>(); curList.add(root.val); res.add(0, curList); } else res.get(size-index-1).add(root.val); if (root.left != null) helper(root.left, res, index+1); if (root.right != null) helper(root.right, res, index+1); }}

转载地址:http://ukuio.baihongyu.com/

你可能感兴趣的文章
IE6下frameset横向滚动条BUG
查看>>
命令查看java的class字节码文件
查看>>
软件下载链接获取方法
查看>>
Oracle 的一个非常好的触发器例子
查看>>
Python线程专题9:线程终止与挂起、实用工具函数
查看>>
HTTP协议入门
查看>>
Python学习之路17-Django入门
查看>>
MySQL Optimization 优化原理
查看>>
AlwaysOn 进阶 Level 1:What is "SQL Server AlwaysOn"?
查看>>
用JEP 343打包工具,构建自包含、可安装的Java应用程序
查看>>
TOP 13大最热开源微服务Java框架
查看>>
用ASP.NET Core 2.1 建立规范的 REST API -- 翻页/排序/过滤等
查看>>
哈默尔的核心竞争力--《可以量化的管理学》
查看>>
设计模式是什么鬼(单例)
查看>>
YodaOS: 一个属于 Node.js 社区的操作系统
查看>>
GNOME Screencaster 将支持 Miracast P2P 传输
查看>>
Backtrack5 常用的漏洞扫描工具
查看>>
this关键字与构造器转发
查看>>
[ERROR] WSREP no such a transition REPLICATING
查看>>
图解linux下top命令的使用
查看>>