题目地址:https://leetcode.com/problems/binary-tree-level-order-traversal-ii/
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,null,null,15,7],
3
/ \
9 20
/ \
15 7
return its bottom-up level order traversal as:
[
[15,7],
[9,20],
[3]
]
这个题目与自顶向下水平遍历二叉树类似,唯一区别就是它是自底向上水平遍历的。
那么也好办,我们已经有从上到下的了,无非就是把从上到下翻转一下罢了。
代码实现如下:
public class BinaryTreeLevelOrderTraversalII {
public List<List<Integer>> levelOrderBottom(TreeNode root) {
List<List<Integer>> levelOrderTop = BinaryTreeLevelOrderTraversal.levelOrder(root);
Collections.reverse(levelOrderTop);
return levelOrderTop;
}
public static void main(String[] args) {
TreeNode node1 = new TreeNode(1);
TreeNode node2 = new TreeNode(2);
TreeNode node3 = new TreeNode(3);
TreeNode node4 = new TreeNode(4);
TreeNode node5 = new TreeNode(5);
TreeNode node6 = new TreeNode(6);
TreeNode node7 = new TreeNode(7);
node1.left = node2;
node1.right = node3;
node2.left = node4;
node2.right = node5;
node3.left = node6;
node3.right = node7;
BinaryTreeLevelOrderTraversalII binaryTreeLevelOrderTraversalII = new BinaryTreeLevelOrderTraversalII();
System.out.println(binaryTreeLevelOrderTraversalII.levelOrderBottom(node1));
}
}
其中levelOrder(TreeNode root)方法参考自顶向下水平遍历二叉树。