剑指 Offer 32 - II. 从上到下打印二叉树 II
从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。
解题代码
思路:记录每一层的位置,然后从左到右的将同一层的节点依次压入数组
var levelOrder = function(root) {
let ans = [];
let k = 0; // 记录当前节点是那层位置的
getResult(root, k, ans);
return ans;
};
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; // 子树的层级 + 1
getResult(root.left, nextK, ans); // 遍历左子树
getResult(root.right, nextK, ans); // 遍历右子树
}