【剑指offer】 从上到下打印二叉树 III
题目
请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。
我的答案
/**
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/
/**
* @param {TreeNode} root
* @return {number[][]}
*/
var levelOrder = function (root) {
var result = [];
if (!root) {
return result;
}
let currentLevel = [root];
let nextLevel = [];
let leftToRight = true;
let levelTemp = [];
while (currentLevel.length) {
if (leftToRight) {//从左到右
const node = currentLevel.shift();
levelTemp.push(node.val);
if (node.left) {
nextLevel.push(node.left);
}
if (node.right) {
nextLevel.push(node.right);
}
} else {//从右到左
const node = currentLevel.pop();
levelTemp.push(node.val);
if (node.right) {
nextLevel.unshift(node.right);
}
if (node.left) {
nextLevel.unshift(node.left);
}
}
if (!currentLevel.length) {
currentLevel = nextLevel;
nextLevel = [];
leftToRight = !leftToRight;
result.push(levelTemp);
levelTemp = [];
}
}
return result;
};
思想:
其实思路和上一篇从上到下打印二叉树差不多,唯一有区别的就是currentLevel和nextLevel的取元素和放元素的方法不同。这里只需要耐心的推理一下就好了。
记录下我的高光时刻(主要是运气)
标题:【剑指offer】 从上到下打印二叉树 III
作者:limanting
地址:https://blog.manxiaozhi.com/articles/2021/09/07/1630946752630.html