algorithm6 2023-09-26 22:16 采纳率: 76.2%
浏览 2
已结题

Python构建二叉树

我在尝试用Python构建二叉树,请问下列程序有哪些问题


class Node(object):
    def __init__(self, data=None, lchild=None, rchild=None):
        self.elem = data  # 表示数据域
        self.lchild = lchild  # 表示左子树
        self.rchild = rchild  # 表示右子树

    def PreOrder(self, root):  # 先序遍历
        if root == None:
            return
        print(root.elem)
        self.PreOrder(root.lchild)  
        self.PreOrder(root.rchild)  

    def InOrder(self, root):  # 中序遍历
        if root == None:
            return
        self.InOrder(root.lchild)  
        print(root.elem)
        self.InOrder(root.rchild)  

    def PostOrder(self, root):  # 后序遍历
        if root == None:
            return
        self.PostOrder(root.lchild)  
        self.PostOrder(root.rchild)  
        print(root.elem)

    def breath_travel(self, root):  # 层序遍历
        if root == None:
            return
        queue = []
        queue.append(root)
        while queue:
            node = queue.pop(0)
            print(node.elem)
            if node.lchild != None:
                queue.append(node.lchild)
            if node.rchild != None:
                queue.append(node.rchild)

    def createBiTree(self, root):
        data = input()
        if data == "#":  # 如果当前元素为'#',则认为其为None
            return
        else:
            root.elem = data
            root.lchild = self.createBiTree(root.lchild)  # 构造左子树
            root.rchild = self.createBiTree(root.rchild)  # 构造右子树
        return


root = Node()  # 创建根节点
root.createBiTree(root)  # 构造整个二叉树

# 遍历二叉树
root.PreOrder(root)  # 先序遍历
root.InOrder(root)  # 中序遍历
root.PostOrder(root)  # 后序遍历
root.breath_travel(root)  # 层序遍历
  • 写回答

4条回答 默认 最新

  • 无序繁星 2023-09-27 08:58
    关注

    最后构造二叉树那里需要改下

                root.lchild = self.createBiTree(Node())  # 构造左子树
                root.rchild = self.createBiTree(Node())  # 构造右子树
            return root
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 10月5日
  • 已采纳回答 9月27日
  • 创建了问题 9月26日

悬赏问题

  • ¥15 三极管电路求解,已知电阻电压和三级关放大倍数
  • ¥15 ADS时域 连续相位观察方法
  • ¥15 Opencv配置出错
  • ¥15 模电中二极管,三极管和电容的应用
  • ¥15 关于模型导入UNITY的.FBX: Check external application preferences.警告。
  • ¥15 气象网格数据与卫星轨道数据如何匹配
  • ¥100 java ee ssm项目 悬赏,感兴趣直接联系我
  • ¥15 微软账户问题不小心注销了好像
  • ¥15 x264库中预测模式字IPM、运动向量差MVD、量化后的DCT系数的位置
  • ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused