平衡二叉树:二叉树中任意节点的左右子树的深度相差不超过1,那就该二叉树就是一颗平衡二叉树。
如何求一颗二叉树的高度/深度?
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def treeDepth(self, root: TreeNode) -> bool:
if root is None:
return 0
else:
return max(self.treeDepth(root.left), self.treeDepth(root.right)) + 1
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
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