您的位置:首页 > 其它

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},

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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: