您的位置:首页 > 其它

二叉树的层次遍历

2014-03-08 20:54 453 查看
题目原型:

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 ArrayList<ArrayList<Integer>> levelOrder(TreeNode root)
{
ArrayList<ArrayList<Integer>> list = new ArrayList<ArrayList<Integer>>();
ArrayList<TreeNode> nodeSet = new ArrayList<TreeNode>();
ArrayList<TreeNode> tmp ;
ArrayList<Integer> numSet ;
if(root!=null)
{
nodeSet.add(root);
while(nodeSet.size()>0)
{
tmp = new ArrayList<TreeNode>();
numSet = new ArrayList<Integer>();
//添加到list中
for(TreeNode tn : nodeSet)
numSet.add(tn.val);
list.add(numSet);
//求下一层的节点
for(TreeNode it : nodeSet)
{
if(it.left!=null)
tmp.add(it.left);
if(it.right!=null)
tmp.add(it.right);
}
nodeSet = tmp;
}
}
return list;

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