Python数据结构与算法06——树与树算法

二叉树
复制代码
class Node(object):
    def __init__(self,val,lchild=None,rchild=None):
        self.val=val
        self.lchild=lchild
        self.rchild=rchild

class Tree(object):
    def __init__(self):
        self.root=None

    def add(self,item):
        node=Node(item)
        if self.root==None:
            self.root=node
            return
        queue=[self.root]
        while queue:
            cur_node=queue.pop(0)
            if cur_node.lchild==None:
                cur_node.lchild=node
                return
            else:
                queue.append(cur_node.lchild)
            if cur_node.rchild==None:
                cur_node.rchild=node
                return
            else:
                queue.append(cur_node.rchild)
    def breadth_travel(self):
        if self.root==None:
            print('NULL')
            return
        queue=[self.root]
        while queue:
            cur_node = queue.pop(0)
            print(cur_node.val, end=' ')
            if cur_node.lchild!=None:
                queue.append(cur_node.lchild)
            if cur_node.rchild!=None:
                queue.append(cur_node.rchild)

    def preorder_travel(self,node):
        if node==None:
            return
        print(node.val,end=' ')
        self.preorder_travel(node.lchild)
        self.preorder_travel(node.rchild)

    def inorder_travel(self,node):
        if node==None:
            return
        self.inorder_travel(node.lchild)
        print(node.val, end=' ')
        self.inorder_travel(node.rchild)
    def postorder_travel(self,node):
        if node==None:
            return
        self.postorder_travel(node.lchild)
        self.postorder_travel(node.rchild)
        print(node.val, end=' ')




tree=Tree()
tree.add(0)
tree.add(1)
tree.add(2)
tree.add(3)
tree.add(4)
tree.add(5)
tree.add(6)
tree.add(7)
tree.add(8)
tree.add(9)
tree.breadth_travel()
print(' ')
tree.preorder_travel(tree.root)
print(' ')
tree.inorder_travel(tree.root)
print(' ')
tree.postorder_travel(tree.root)
复制代码

 

posted @   Junior_bond  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示