zoukankan      html  css  js  c++  java
  • 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)
    
  • 相关阅读:
    用dockerFile和docker build命令 创建带两个数据卷的新镜像
    Docker 学习 3 镜像更多命令 docker commit 提交容器副本,使之成为一个新的镜像
    Docker学习笔记 2 更多的容器命令
    Docker的学习1 安装 与 基础篇
    SeekBar(拖动条)
    本周总结
    ProgressBar(进度条)
    Android对话框
    css语法
    css基础
  • 原文地址:https://www.cnblogs.com/wztshine/p/13687832.html
Copyright © 2011-2022 走看看