python 树

class Node:
    """
    节点类
    """
    def __init__(self, value=None, left=None, right=None):
        self.val = value
        self.left = left
        self.right = right

class Tree:
    """
    树类
    """
    def __init__(self):
        self.root = Node()
        self.queue = []

    def add(self, val):
        """
        为树添加节点
        """
        node = Node(value=val)

        if self.root.val is None:  # 如果树是空的,则当前节点为根节点
            self.root = node
            self.queue.append(self.root)
        else:
            treeNode = self.queue[0]
            if treeNode.left is None:
                treeNode.left = node
                self.queue.append(treeNode.left)
            else:
                treeNode.right = node
                self.queue.append(treeNode.right)
                self.queue.pop(0)  # 如果该节点存在左右子树,将此节点丢弃

    def pre_order(self,node):       # 先序遍历:根左右
        print(node.val)
        if node.left is not None:
            self.pre_order(node.left)
        if node.right is not None:
            self.pre_order(node.right)
            
    def center_order(self,node): # 中序遍历:左根右
        if node.left is not None:
            self.center_order(node.left)
        print(node.val)
        if node.right is not None:
            self.center_order(node.right)
    
    def post_order(self,node): # 后序遍历:左右根
        if node.left is not None:
            self.post_order(node.left)
        if node.right is not None:
            self.post_order(node.right)
        print(node.val)


if __name__ == '__main__':
    tree = Tree()  # 新建一个树对象
    for val in range(10):
        tree.add(val)

    tree.post_order(tree.root)
posted @   wztshine  阅读(156)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示