二叉树(python实现)

Posted L1m1t

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树(python实现)相关的知识,希望对你有一定的参考价值。

二叉树的遍历和添加结点

class Node():
    def __init__(self, item):
        self.elem = item
        self.l_child = None
        self.r_child = None

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

    def add(self, elem):
        """为树添加节点"""
        node = Node(elem)
        # 如果树是空的,则对根节点赋值
        if self.root is None:
            self.root = node
            return
        else:
            queue = []
            queue.append(self.root)
            # 对已有节点进行层次遍历
            while queue:
                # 弹出队列的第一个元素
                cur = queue.pop(0)
                if cur.l_child == None:
                    cur.l_child = node
                    return
                elif cur.r_child == None:
                    cur.r_child = node
                    return
                else:
                    # 如果左右子树都不为空,加入队列继续判断
                    queue.append(cur.l_child)
                    queue.append(cur.r_child)

    def preorder(self, root):
        if root == None:
            return
        print(root.elem, end=‘‘)
        self.preorder(root.lchild)
        self.preorder(root.rchild)

        def inorder(self, root):
            """递归实现中序遍历"""
            if root == None:
                return
            self.inorder(root.lchild)
            print(root.elem, end=" ")
            self.inorder(root.rchild)

        def postorder(self, root):
            """递归实现后续遍历"""
            if root == None:
                return
            self.postorder(root.lchild)
            self.postorder(root.rchild)
            print(root.elem, end=" ")

        # ××××××××××    广度优先遍历   ×××××××××
        # 从树的root开始,从上到下从从左到右遍历整个树的节点
        def breadth_travel(self):
            """利用队列实现树的层次遍历"""
            if self.root == None:
                return
            queue = [self.root]
            while queue:
                node = queue.pop(0)
                print(node.elem, end=" ")
                if node.lchild != None:
                    queue.append(node.lchild)
                if node.rchild != None:
                    queue.append(node.rchild)

 

以上是关于二叉树(python实现)的主要内容,如果未能解决你的问题,请参考以下文章

Python数据结构系列☀️《树与二叉树-基础知识》——知识点讲解+代码实现☀️

python代码实现二叉树的镜像树

python 二叉树实现

python代码实现二叉树中最低的公共祖先

python实现二叉树的遍历以及基本操作

Python教程讲解二叉树的三种深度