二叉树及的性质及二叉树的Python实现

树形结构是一类非常重要的非线性数据结构,其中树和二叉树最为常用。

二叉树的特点是每个节点至多只有两棵子树,且二叉树的子树有左右之分,其次序不能任意颠倒。

二叉树的性质:

性质 1. 在二叉树的第层上至多有个结点

性质 2. 深度为的二叉树至多有个结点,

性质 3. 对任何一个二叉树,如果其终端结点数为,度为2的结点数为,则

一棵深度为且有个结点的二叉树称为满二叉树。深度为的,有个结点的二叉树,当且仅当其每一个结点都与深度为的满二叉树中编号从1至n的结点一一对应时,称之为完全二叉树

完全二叉树的特点:(1)叶子结点只可能在层次最大的两层上出现;(2)对任一结点,若其右分支下的子孙的最大层次为,则其左分支下的子孙的最大层次必为

性质 4. 具有个结点的完全二叉树的深度为

二叉树的实现

class Node:
    def __init__(self,data):
        self.data = data
        self.lchild = None
        self.rchild = None
class BinaryTree:
    def __init__(self):
        self.root = None

    # 创建二叉树
    def CreatBiTree(self,node):
        self.root = node
    # 销毁二叉树
    def DestroyBiTree(self):
        self.root = None
    # 清空二叉树
    def ClearBiTree(self):
        self.root.lchild = None
        self.root.rchild = None
    # 判断二叉树是否为空
    def BiTreeEmpty(self):
        if self.root == None:
            return False
        return True
    
    # 先序遍历二叉树
    def PreOrderTraverse(self,root):
        self.root = root
        if self.root == None:
            return False

        if root:
            print('{} -> '.format(root.data),end = '')
            self.PreOrderTraverse(root.lchild)
            self.PreOrderTraverse(root.rchild)

    # 中序遍历二叉树
    def InOrderTraverse(self,root):

        if root:
            self.InOrderTraverse(root.lchild)
            print('{} -> '.format(root.data), end='')
            self.InOrderTraverse(root.rchild)
    # 后序遍历二叉树
    def PostOrderTraverse(self,root):
        if root:
            self.PostOrderTraverse(root.lchild)
            self.PostOrderTraverse(root.rchild)
            print('{} -> '.format(root.data), end='')
    # 层序遍历二叉树
    def LevelOrderTraverse(self):
        pass


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值