您的位置:首页 > 编程语言 > Java开发

Leetcode Binary Tree Level Order Traversal II 二叉树分层遍历

2015-05-11 14:16 441 查看

题目:

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]
]


分析:

和第一题目一样,只是需要在加入每层节点的时候都加在ArrayList的第一个。用下面这个函数:

public void add(int index, E element)

Inserts the specified element at the specified position in this list. Shifts the element currently at that position (if any) and any subsequent elements to the right
(adds one to their indices).

Java代码实现:

/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public List<List<Integer>> levelOrderBottom(TreeNode root) {
List<List<Integer>> result = new ArrayList<List<Integer>>();
if(root==null)
return result;

Queue<TreeNode> q = new LinkedList<TreeNode>();
q.offer(root);

while(!q.isEmpty())
{
int size = q.size();
ArrayList<Integer> temp = new ArrayList<Integer>();
for(int i=0;i<size;i++)
{
TreeNode node = q.poll();
temp.add(node.val);
if(node.left!=null)
q.offer(node.left);
if(node.right!=null)
q.offer(node.right);
}
result.add(0, temp);
}
return result;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息