Python实现"N叉树的层序遍历"的一种方法

本文介绍了一种算法,用于按层级访问N叉树的节点值,并提供了详细的Python实现代码。该算法首先检查根节点是否为空,然后初始化返回数据结构和当前层级节点列表。通过循环迭代,将当前层级节点值加入临时列表,同时收集下一层级的节点,直至所有层级被遍历。

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

给定一颗n叉树,返回按层级访问树节点的值。(从左到右,一层接一层)
例如,给定一颗三叉树
返回格式为:

[
[1],
[3,2,4],
[5,6]
]

注意:
树深最大为1000
节点总数最多为5000

1、注意题中,当前结点的子树是以列表的形式存放,所以代码对树层级结点的存放格式为双层列表

def levelOrder(self, root):
        """
        :type root: Node
        :rtype: List[List[int]]
        """
        if not root: 
            return []
        back = []     #函数返回的数据
        curLevel = [[root]]    #当前遍历树的层级,双层列表
        while curLevel:
            temp = []        #遍历当前层级时存放的临时结点值
            nextLevel = []      #下一层树结点
            for i in curLevel:    
                for j in i:      #注意,层级节点存放为双层列表
                    temp.append(j.val)
                    if j.children:    #当前结点是否存在子结点
                        nextLevel.append(j.children)
            back.append(temp)
            curLevel = nextLevel
        return back

算法题来自:https://leetcode-cn.com/problems/n-ary-tree-level-order-traversal/description/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值