【Python】(十七)Python实现树结构

本节我们将用Python实现树结构中最简单的二叉树,并将在以后的章节中应用它。

二叉树类

#二叉树类
class BinaryTree(object):
    # 初始化,传入根节点的值
    def __init__(self, root_value):
        self.root = root_value
        self.leftchild = None
        self.rightchild = None
    # 插入左子树
    def insert_left(self, left_value):
        if self.leftchild == None :
            self.leftchild = BinaryTree(left_value)
        else:
            left_subtree = BinaryTree(left_value)
            left_subtree.leftchild = self.leftchild
            self.leftchild = left_subtree
    # 插入右子树
    def insert_right(self, right_value):
        if self.rightchild == None :
            self.rightchild = BinaryTree(right_value)
        else:
            right_subtree = BinaryTree(right_value)
            right_subtree.rightchild = self.rightchild
            self.rightchild = rightchild
    # 设置根节点的值
    def set_root(self, root_value):
        self.root = root_value
    # 获取根节点的值
    def get_root(self):
        return self.root
    # 获取左子树
    def get_leftchild(self):
        return self.leftchild
    # 获取右子树
    def get_rightchile(self):
        return self.rightchild

二叉树的遍历

# 前序遍历二叉树
def pre_traversal(tree):
    if tree != None:
        print(tree.root)
        pre_traversal(tree.leftchild)
        pre_traversal(tree.rightchild)
        
# 中序遍历二叉树
def in_traversal(tree):
    if tree != None:
        in_traversal(tree.leftchild)
        print(tree.root)
        in_traversal(tree.rightchild)
        
# 后序遍历二叉树
def post_traversal(tree):
    if tree != None:
        post_traversal(tree.leftchild)
        post_traversal(tree.rightchild)
        print(tree.root)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 基于树实现的数据结构,具有两个核心特征: 逻辑结构:数据元素之间具有层次关系; 数据运算:操作方法具有Log级的平...
    yhthu阅读 4,351评论 1 5
  • 树的概述 树是一种非常常用的数据结构,树与前面介绍的线性表,栈,队列等线性结构不同,树是一种非线性结构 1.树的定...
    Jack921阅读 4,509评论 1 31
  • 1.树(Tree): 树是 n(n>=0) 个结点的有限集。当 n=0 时称为空树。在任意一颗非空树中:有且仅有一...
    ql2012jz阅读 1,059评论 0 3
  • 這可能是我進入跑步圈的最後一文簡書一個習慣的養成需要21天。接下來的每一天我會依然如期的早睡早起跑步,但是可能不會...
    AD_Chen阅读 290评论 0 1
  • 今天下雨,虽然下午睡了一会,临走时又生出疲倦感,鼓了鼓气,打了个旳去跳舞,算是给自己鼓励。 今晚的基础练习感觉不错...
    31号力阅读 178评论 0 0