题目:
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;
}
}
本文介绍了一种二叉树的层次遍历算法——从叶子节点到根节点的层次遍历,并提供了一个Java实现示例。该算法使用队列来保存每一层的节点,并将节点值逆序添加到结果列表中。

被折叠的 条评论
为什么被折叠?



