给定一个二叉树,返回其节点值自底向上的层序遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
思路:
1.创建一个数组result,创建一个队列q,将root加入队列
2. 每次从队列中取出一个节点,将该节点的左右节点放入队列
每次while循环必须将队列中所有节点遍历完,才能进行下一次循环
while(q.length!=0){
let subResult=[]
result.push(node.val)
for (let i = 0; i <q.length; i++) {
node=q.shift()
subResult.push(node.val)
if(node.left) result.push(node.left)
if(node.right) result.push(node.right)
}
result.unshift(subResult)
}
var levelOrderBottom = function(root) {
const result=[]
if(!root) return result
let q=[]
q.push(root)
while(q.length!=0){
let subResult=[]
let currentLevel=q.length
for(let i=0;i<currentLevel;i++){
node=q.shift()
subResult.push(node.val)
if(node.left) q.push(node.left)
if(node.right) q.push(node.right)
}
result.unshift(subResult)
}
return result
};