leetcode102.二叉树的层序遍历
leetcode102.二叉树的层序遍历
题目
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。
用例
二叉树:[3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回其层序遍历结果:
[
[3],
[9,20],
[15,7]
]
求解
/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {TreeNode} root
* @return {number[][]}
*/
var levelOrder = function(root) {
//二叉树的层序遍历
let arr = []
let res = []
let layer=0
let layer_last=0
arr.push(root)
let i =0
let last = 0
while(arr[i]!=null){
//队列出
let p = arr[i]
//将出栈的值添加到res中
if(!res[layer]){
res[layer]=[]
res[layer].push(p.val)
}else{
res[layer].push(p.val)
}
//判断是否有左右子树,存在就进队列
if(p.left!=null){
arr.push(p.left)
last++
}
if(p.right!=null){
arr.push(p.right)
last++
}
//当层是否遍历完毕
if(i==layer_last){
layer++
layer_last=last
}
i++;
}
return res
};

浙公网安备 33010602011771号