给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
例如:
给定二叉树 [3,9,20,null,null,15,7]
3
/ \
9 20
/ \
15 7
返回其自底向上的层次遍历为:
[
[15,7],
[9,20],
[3]
]
通过此题掌握二叉树的知识和Java泛型、栈,队列的使用
题目分析:
此题是一道知识综合题;从返回结果的格式可以看出依然是List中存储List,所以要运用JAVA泛型的知识,可以参考这篇博客JAVA泛型;
题目要求是层次遍历,从底向上,从左至右,遍历的结果我们可以运用队列存储,利用队列先进先出的特性;而最后的结果要从底向上返回,我们则自然想到用栈先进后出的特性。
我之前写的一篇博客二叉树的层次遍历可以作为参考,与此题稍微不同。
代码实现:
public static class TreeNode { int data; TreeNode left; TreeNode right; TreeNode(int val) { data = val; } } public List<List<Integer>> levelOrderBottom(TreeNode root) {<