树--python

# coding=utf-8

class node(object):
    def __init__(self,data=None,left=None,right=None):
        self.data=data
        self.left=left
        self.right=right
        #深度
def depth(tree):
        if tree==None:
            return 0
        left,right=depth(tree.left),depth(tree.right)
        return max(left,right)+1
        #前序遍历,先遍历根节点
def pre_order(tree):
    if tree==None:
        return
    print(tree.data)
    pre_order(tree.left)
    pre_order(tree.right)
    #中序遍历
def mid_order(tree):
    if tree==None:
        return
    mid_order(tree.left)
    print(tree.data)
    mid_order(tree.right)
    #后序遍历
def post_order(tree):
    if tree==None:
        return
    post_order(tree.left)
    post_order(tree.right)
    print(tree.data)
#层次遍历
def level_order(tree):
    if tree==None:
        return
    q=[]
    q.append(tree)
    while q:
        current=q.pop(0)
        print(current.data)
        if current.left!=None:
            q.append(current.left)
        if current.right!=None:
            q.append(current.right)
#判断是否平衡二叉树
def isbalance(tree):
    if tree==None:
        return True
    left,right=depth(tree.left),depth(tree.right)
    diff=left-right
    if diff<-1 or diff>1:
        return False
    return isbalance(tree.left)and isbalance(tree.right)

if __name__ == '__main__':
    tree=node('d',node('b',node('a'),node('c')),node('e',right=node('g',node('f'))))
    print('前序遍历:')
    pre_order(tree)
    print('中序遍历:')
    mid_order(tree)
    print('后序遍历:')
    post_order(tree)
    print('层次遍历:')
    level_order(tree)
    print('深度:%d'%depth(tree))
    print('是否为平衡二叉树:%s'%isbalance(tree))

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值