返回值:
当节点root 左 / 右子树的深度差≤1 :则返回当前子树的深度,即节点 root 的左 / 右子树的深度最大值 +1( max(left, right) + 1 );
当节点root 左 / 右子树的深度差 > 2 :则返回 -1 ,代表 此子树不是平衡树 。
终止条件:
当 root 为空:说明越过叶节点,因此返回高度 0;
当左(右)子树深度为 -1 :代表此树的 左(右)子树 不是平衡树,因此剪枝,直接返回 -1 ;
class Solution:
def isBalanced(self, root: TreeNode) -> bool:
def recur(root):
if not root: return 0
left = recur(root.left)
if left == -1: return -1
right = recur(root.right)
if right == -1: return -1
return max(left, right) + 1 if abs(left - right) <= 1 else -1
return recur(root) != -1
该博客主要讨论如何判断一棵二叉树是否是平衡的。通过递归函数`recur`计算每个节点的左右子树深度,如果左/右子树深度差超过1,则返回-1表示不平衡;反之,返回深度值。最终,如果根节点的子树深度不为-1,说明是平衡二叉树。
2017

被折叠的 条评论
为什么被折叠?



