#/bin/env python
# coding: utf-8
class BTreeNode:
def __init__(self, x):
self.e = x
self.left = None
self.right = None
class BBTree:
def depth(self , root):
if root == None:
return 0
l_depth = self.depth(root.left)
r_depth = self.depth(root.right)
return max(l_depth , r_depth) + 1
def is_balanced(self, root):
if not root:
return True
l_depth = self.depth(root.left)
r_depth = self.depth(root.right)
diff = l_depth - r_depth
if abs(diff) > 1:
return False
return self.is_balanced(root.left) and self.is_balanced(root.right)
bbt = BBTree()
def test_1():
T = BTreeNode('a')
l1 = BTreeNode('b')
l1.left = BTreeNode('d')
T.left = l1
print(bbt.is_balanced(T))
def test_2():
T = BTreeNode('a')
l1 = BTreeNode('b')
r1 = BTreeNode('c')
l1.left = BTreeNode('d')
T.left = l1
T.right = r1
print(bbt.is_balanced(T))
if __name__ == "__main__":
test_1()
test_2()
判断平衡二叉树
最新推荐文章于 2024-07-22 22:14:44 发布