# 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))
树--python
最新推荐文章于 2024-05-08 03:16:40 发布