29 - 二叉树的层次遍历2
题目
给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
例如: 给定二叉树 [3,9,20,null,null,15,7],
3 / 9 20 / \ 15 7
返回其自底向上的层次遍历为:
[ [15,7], [9,20], [3] ]
解答
一开始的思路是,一层层pop出来,同一层的放在一个数组里面,最后reverse一下
思路是有了,就是写了半天写不出来。心想这还简单难度呢?
结果是要先把层次遍历的1写完,然后2就reverse一下。。。。
那自然是简单的很了!1可是中等难度呢!
迭代
var levelOrderBottom = function (root) {
if (!root) {
return []
}
let stack = [root]
let result = []
let level = []
let stack_tmp = []
while (stack.length > 0) {
for (let i = 0; i < stack.length; i++) {
const cur = stack[i]
level.push(cur.val)
if (cur.left) {
stack_tmp.push(cur.left)
}
if (cur.right) {
stack_tmp.push(cur.right)
}
}
result.push(level)
stack = stack_tmp
level = []
stack_tmp = []
}
return result.reverse()
};Runtime: 68 ms, faster than 20.69% of JavaScript online submissions for Binary Tree Level Order Traversal II.
Memory Usage: 34.9 MB, less than 66.05% of JavaScript online submissions for Binary Tree Level Order Traversal II.
递归
Runtime: 68 ms, faster than 20.69% of JavaScript online submissions for Binary Tree Level Order Traversal II.
Memory Usage: 34.8 MB, less than 95.06% of JavaScript online submissions for Binary Tree Level Order Traversal II.
Last updated
Was this helpful?