剑指offer 平衡二叉树 python
题目描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
样例
如果是 返回True
如果不是 返回False
想法一:
遍历节点,计算左右子树的高度,在计算同时,如果有子树不符合平衡二叉树,则返回-1,这样不需要遍历所有节点。
流程图如下:
代码:
class Solution:
def IsBalanced_Solution(self, pRoot):
# write code here
return self.fun(pRoot) is not -1
def fun(self, node):
if node is None:
return 0
left = self.fun(node.left)
if left is -1:
return -1
right = self.fun(node.right)
if right is -1:
return -1
if abs(left - right) > 1:
return max(left, right) + 1
else:
return -1
最后
刷过的LeetCode或剑指offer源码放在Github上了,希望喜欢或者觉得有用的朋友点个star或者follow。
有任何问题可以在下面评论或者通过私信或联系方式找我。
联系方式
QQ:791034063
Wechat:liuyuhang791034063
CSDN:https://blog.csdn.net/Sun_White_Boy
Github:https://github.com/liuyuhang791034063