【数据结构】二叉树的python实现

【数据结构】二叉树的python实现


本博文描述的二叉树是任意二叉树,可以使完全二叉树,也可以是非完全二叉树。
首先声明一个二叉树节点的初始化类TNode,每一个节点都有三个组成部分,节点的元素值,节点的左子树地址和节点的右子树地址。

class TNode(object):
    #初始化二叉树的节点,self.val是节点的数值,self.left是节点左子树的地址,self.right是右子树的地址。
    def __init__(self,val):
        self.val = val
        self.left = None
        self.right = None

然后定义二叉树的类CBT,其中包括二叉树根节点的初始化函数__init__,添加新节点到二叉树中的函数add,计算二叉树深度的函数getDepth,判断二叉树是否为空的函数isEmpty,采用递归方法层序遍历二叉树的函数floor_travel,采用递归方法先序遍历二叉树的函数front_travel,采用递归方法层中序历二叉树的函数middle_travel和采用递归方法后序遍历二叉树的函数back_travel。

class CBT(object):
    #初始化根节点
    def __init__(self):
        self.root = None
    
    #将新的节点添加到二叉树中
    def add(self,data):
        '''
        将data加入到完全二叉树作为一个节点
        '''
        node = TNode(data)
        #如果二叉树为空,将节点作为根节点
        if self.isEmpty():
            self.root = node
        #否则按照左右顺序添加节点,将节点作为二叉树的一个节点
        else:
            my_queue = []
            my_queue.append(self.root)
            while my_queue:
                cur_node = my_queue.pop(0)
                #如果当前节点为空节点,直接跳过
                if cur_node.val is None:
                    continue
                if cur_node.left == None:
                    cur_node.
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值