二叉树的层序遍历 II
给定一个二叉树,返回其节点值自底向上的层序遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
解题代码
思路:先将树中每一层的节点进行遍历存储,然后倒序遍历结果数组,返回新的数组。
var levelOrderBottom = function(root) {
let ans = [];
let reverseAns = [];
let k = 0; // 记录当前节点是那一层
getResult(root, k, ans);
for (let i = ans.length - 1; i >= 0; i--) {
reverseAns.push(ans[i]); // 反转数组中的顺序
}
return reverseAns; // 返回反转顺序后的结果数组即可
};
var getResult = function(root, k, ans){
if (root === null) return null;
if (k === ans.length) ans.push([]); // 当前层时添加一个数组,用于存节点值
ans[k].push(root.val); // 存储k层节点值
let nextK = k + 1;
getResult(root.left, nextK, ans); // 遍历左子树
getResult(root.right, nextK, ans); // 遍历右子树
}