102. 二叉树的层序遍历

本文介绍如何使用广度优先搜索算法实现二叉树的层序遍历,提供了一个JavaScript函数实例,并展示了如何通过递归栈来逐层获取节点值。这对于理解数据结构和算法在实际编程中的应用非常有用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。
示例:
二叉树:[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) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {TreeNode} root
 * @return {number[][]}
 */
var levelOrder = function(root) {
    //层序遍历就是广度遍历
    // if(!root){return 0;}
    // const stack=[root]
    // while(stack.length){
    //     const n=stack.shift()
    //     console.log(n.val)
    //     if(n.left) stack.push(n.left)
    //     if(n.right) stack.push(n.right)
    // }
    if(!root) return []
    const stack=[[root,0]]
    //用res来保存结果值
    let res=[]
    while(stack.length){
        const [n,l]=stack.shift()
        //如果当前级没有这层级的
        if(!res[l]){
            res.push([n.val])
        }else{
           res[l].push(n.val)
        }
        if(n.left) stack.push([n.left,l+1])
        if(n.right) stack.push([n.right,l+1])
    }
    return res
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值