问题描述
给定一个二叉树,返回其节点值自底向上的层次遍历。(即从左到右,逐层从左向右遍历)。
例如:
给定二叉树 [3,9,20,null,null,15,7]
,
3
/ \
9 20
/ \
15 7
返回其自底向上的遍历为:
[
[15,7],
[9,20],
[3]
]
解法一
解题思路:
使用队列来实现层次遍历,从底部开始逐层向上遍历。
/*
* @lc app=leetcode.cn id=107 lang=javascript
*
* [107] 二叉树的层次遍历 II
*/
// @lc code=start
function levelOrderBottom(root) {
if (!root) return [];
const result = [];
const queue = [root];
while (queue.length) {
const levelSize = queue.length;
const level = [];
for (let i = 0; i < levelSize; i++) {
const node = queue.shift();
level.push(node.val);
if (node.left) queue.push(node.left);
if (node.right) queue.push(node.right);
}
result.unshift(level);
}
return result;
}
// @lc code=end