zoukankan      html  css  js  c++  java
  • 二叉树的实现

    # coding:utf8
    class Node():
        def __init__(self, _item):
            self.item = _item
            self.left = None
            self.right = None
    
    
    class Tree():
        def __init__(self):
            self.root = None
    
        def append(self, _item):
            node = Node(_item)
            cur = self.root
            point_list = [cur]
            # 如果添加的是根节点
            if cur == None:
                self.root = node
                return
            while True:
                target_point = point_list.pop(0)
                if target_point.left == None:
                    target_point.left = node
                    return
                else:
                    point_list.append(target_point.left)
                if target_point.right == None:
                    target_point.right = node
                    return
                else:
                    point_list.append(target_point.right)
    
        # 广度优先搜索遍历
        def travel(self):
            cur = self.root
            point_list = [cur]
            while point_list:
                target_point = point_list.pop(0)
                print(target_point.item)
                if target_point.left:
                    point_list.append(target_point.left)
                if target_point.right:
                    point_list.append(target_point.right)
    
        # 深度优先搜索遍历
        def forward(self, root):  # 前序遍历 :根左右
            if root == None:
                return
            print(root.item)
            self.forward(root.left)
            self.forward(root.right)
    
        def middle(self, root):  # 中序遍历 :左根右
            if root == None:
                return
            self.middle(root.left)
            print(root.item)
            self.middle(root.right)
    
        def back(self, root):  # 后序遍历 :左右根
            if root == None:
                return
            self.back(root.left)
            self.back(root.right)
            print(root.item)
    
    
    if __name__ == "__main__":
        tree = Tree()
        tree.append(1)
        tree.append(2)
        tree.append(3)
        tree.append(4)
        tree.append(5)
        tree.append(6)
        tree.append(7)
        # tree.travel()
        # tree.forward(tree.root)
        # tree.middle(tree.root)
        tree.back(tree.root)
  • 相关阅读:
    Maven相关知识片
    fastjson使用
    Block pool ID needed, but service not yet registered with NN java.lang.Exception: trace 异常解决
    JVM之内存结构详解
    ContextCleaner ——Spark 应用程序的垃圾回收器
    重新认识Java 8的HashMap
    HDFS NameNode内存全景
    HDFS的NameNode与SecondaryNameNode的工作原理
    大数据——基础知识
    HDFS数据定期清理
  • 原文地址:https://www.cnblogs.com/sun-10387834/p/12817768.html
Copyright © 2011-2022 走看看