您的位置:首页 > 其它

Binary Tree Level Order Traversal II

2013-09-14 05:35 176 查看
Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left to right, level by level from leaf to root).

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

3
/ \
9  20
/  \
15   7


return its bottom-up level order traversal as:

[
[15,7]
[9,20],
[3],
]
解题思路: 使用BFS遍历树,将每一层放入一个ArrayList中。当一层结束后,将这个ArrayList插到最终的List的头部。


/**
* Definition for binary tree
* public class TreeNode {
*     int val;
*     TreeNode left;
*     TreeNode right;
*     TreeNode(int x) { val = x; }
* }
*/
public class Solution {

public ArrayList<ArrayList<Integer>> levelOrderBottom(TreeNode root) {
// Start typing your Java solution below
// DO NOT write main() function
ArrayList<TreeNode> queue = new ArrayList<TreeNode>();
ArrayList<ArrayList<Integer>> r = new ArrayList<ArrayList<Integer>>();
if(root == null) return r;
queue.add(root);
TreeNode nl = new TreeNode(999);//999 是一个singal,表示一层结束了。
queue.add(nl);
ArrayList<Integer> cur = new ArrayList<Integer>();
while(queue.size() != 1){
TreeNode rn = queue.remove(0);
if(rn.val == 999){
queue.add(nl);
r.add(0,cur);
cur = new ArrayList<Integer>();
}
else{
if(rn.left != null) queue.add(rn.left);
if(rn.right != null) queue.add(rn.right);
cur.add(rn.val);
}
}
r.add(0,cur);
return r;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: