Binary Tree Level Order Traversal
2015-08-04 14:34
447 查看
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},
return its level order traversal as:
使用两个队列,一个保存当前层的节点,一个保存下一层的节点。当前层为空时,
将下一层赋给当前层。
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] ]
使用两个队列,一个保存当前层的节点,一个保存下一层的节点。当前层为空时,
将下一层赋给当前层。
public class Solution { public List<List<Integer>> levelOrder(TreeNode root) { ArrayList<List<Integer>> result=new ArrayList<List<Integer>>(); ArrayList<Integer> lt=new ArrayList<Integer>(); if(root==null) return result; Queue<TreeNode> cur=new LinkedList<TreeNode>(); Queue<TreeNode> next=new LinkedList<TreeNode>(); cur.add(root); while(!cur.isEmpty()){ TreeNode node=cur.poll(); if(node.left!=null) next.add(node.left); if(node.right!=null) next.add(node.right); lt.add(node.val); if(cur.isEmpty()){ cur=next; next=new LinkedList<TreeNode>(); result.add(lt); lt=new ArrayList<Integer>(); } } return result; } }
相关文章推荐
- 和SimpleCursorAdapter有关的小问题
- tcpDump 抓包保存
- Objective-C学习- 便利初始化函数和便利构造器
- 推荐4个Android引导页控件
- iOS开发--UISwitch用法
- Windows批处理命令入门
- MySQL Study之--MySQL存储过程循环
- Algorithms—199.Binary Tree Right Side View
- ACM之北大——1000_A+B Problem
- android网络通信之WIFI教程实例汇总
- c++静态成员
- 推荐3个Android筛选器控件
- kafka contrib包之hadoop-consumer分析
- 重点关注之Filter的使用(性能计数和错误处理)
- InterProScan 5.17-56.0 安装和使用
- Json数据处理方法
- Netty Http server & Client
- UITableView隐藏多余分割线
- 重点关注之客户端调用
- socket通信之socket的通信过程