按层次生成、遍历二叉树

本文介绍了如何按层次遍历二叉树,通过使用队列保存待处理节点,详细阐述了如何实现层次遍历,并特别指出在遍历过程中确定层次结束的条件。此外,还讨论了如何将每层节点分别存储在列表中,例如[[3], [9, 20], [15, 7]],并提供了判断层次结束的依据。" 79704660,5651814,使用sklearn进行关键词提取,"['自然语言处理', '文本分析', 'sklearn库', '信息检索']
摘要由CSDN通过智能技术生成

对于二叉树一般是按深度生成和遍历,比如使用递归方法进行先序遍历、中序遍历、后序遍历。这次我们按层次生成和遍历二叉树。

这种遍历方式关键在于需要使用一个队列保存“已处理该节点,但还没处理它的子节点”这样的节点。

# Python代码

# Definition for singly-linked list.
class BinTree(object):
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None

class Solution(object):

    # 按层次建立二叉树
    def createBinTree(self, inputList):

        # 尚未设置子节点的节点列表
        nodeList = []

        if (inputList == None) or (len(inputList) == 0):
            return None
        # 取出根元素
        value = inputList.pop(0)
        root = BinTree(value)
        nodeList.append(root)

        # 结束条件:所有值不为“#”的节点都设置了子节点,即nodeList为空
        while len(nodeList) != 0:
            leftValue = inputList.pop(0)
            rightValue = inputList.pop(0)
            if leftValue != '#' and rightValue != '#':
                nodeLeft = BinTree(leftValue)
                nodeRight = BinTree(rightValue)

                # 每次取出两个节点,加入到 “未设置子节点的节点列表”
                nodeList.append(nodeLeft)
                nodeList.append(nodeRight)
                nodeList[
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值