Leetcode 103 二叉樹的鋸齒形層序遍歷
阿新 • • 發佈:2020-12-23
Leetcode 103 二叉樹的鋸齒形層序遍歷
function TreeNode(val) {
this.val = val;
this.left = this.right = null;
};
var zigzagLevelOrder = function(root) {
if (!root) {
return [];
}
return dfs(root);
function dfs(root){
const ans = []; //儲存返回結果
const nodeQueue = [root]; //儲存二叉樹的結構,用於深搜的遍歷
let isOrderLeft = true; //決定遍歷的順序
while (nodeQueue.length) {
let levelList = []; //儲存同一深度上的節點值
const size = nodeQueue.length; // 同一深度節點的個數
for (let i = 0; i < size; ++i) {
const node = nodeQueue. shift();
if (isOrderLeft) {
levelList.push(node.val);
} else {
levelList.unshift(node.val);
}
if (node.left !== null) {
nodeQueue.push(node.left);
}
if (node.right !== null) {
nodeQueue.push(node.right);
}
}
ans.push(levelList);
isOrderLeft = !isOrderLeft;
}
return ans;
}
};