给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。
示例:
二叉树:[3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回其层次遍历结果:
[
[3],
[9,20],
[15,7]
]
因为queue.length在循环中受到影响,故不能作为条件使用
/**
* 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) {
if (!root) {
return [];
}
let queue = new Array();
let result = new Array();
result = [];
queue = [];
queue.push(root);
while (queue.length !== 0) {
result.push([]);
let currentLength = queue.length;
// console.log("outter",queue)
for (let i = 0; i < currentLength; i++) {
// console.log("innner",queue.length)
let node = queue.shift();
result[result.length - 1].push(node.val)
if (node.left) {
queue.push(node.left)
}
if (node.right) {
queue.push(node.right)
}
}
}
return result;
};
root的数据结构
TreeNode {
val: 3,
left: TreeNode {
val: 9,
left: null,
right: null
},
right: TreeNode {
val: 20,
left: TreeNode {
val: 15,
left: null,
right: null
},
right: TreeNode {
val: 7,
left: null,
right: null
}
}
}
queue的长度为1,2,4,8,16,32,64,128,256,…