给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。
示例 1:
输入: root = [3,9,20,null,null,15,7]
输出: [[3],[9,20],[15,7]]
示例 2:
输入: root = [1]
输出: [[1]]
示例 3:
输入: root = []
输出: []
提示:
- 树中节点数目在范围
[0, 2000]内 -1000 <= Node.val <= 1000
错误写法
function levelOrder(root: TreeNode | null): number[][] {
if (!root) return []
let tempArr: number[] = []
const resArr: number[][] = []
const helperQueue: TreeNode[] = []
let curNode: TreeNode
helperQueue.push(root)
while(helperQueue.length) {
for(let i = 0; i < helperQueue.length; i++) {
curNode = helperQueue.shift()!;
tempArr.push(curNode.val);
if (curNode.left) helperQueue.push(curNode.left)
if (curNode.right) helperQueue.push(curNode.right)
}
resArr.push(tempArr)
tempArr = []
}
return resArr
};
订正:
注意:不能直接用helperQueue.length控制下面的循环,因为helperQueue.length是动态变化的
function levelOrder(root: TreeNode | null): number[][] {
if (!root) return []
let tempArr: number[] = []
const resArr: number[][] = []
const helperQueue: TreeNode[] = []
let curNode: TreeNode
helperQueue.push(root)
while(helperQueue.length) {
const length = helperQueue.length//注意:不能直接用helperQueue.length控制下面的循环,因为helperQueue.length是动态变化的
for(let i = 0; i < length; i++) {
curNode = helperQueue.shift()!;
tempArr.push(curNode.val);
if (curNode.left) helperQueue.push(curNode.left)
if (curNode.right) helperQueue.push(curNode.right)
}
resArr.push(tempArr)
tempArr = []
}
return resArr
};