应用题-二叉树专题-平衡二叉树( 思路非常重要
```python
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def isBalanced(self, root: Optional[TreeNode]) -> bool:
# 平衡二叉树 是指该树所有节点的左右子树的高度相差不超过 1。
# 递归定义 平衡二叉树 它的左右子树也是平衡二叉树
# 显然 自底向下进行判断 判断到根节点时 如果左右子树是平衡二叉树 则是平衡二叉树
# 判断是否是平衡二叉树 站在根节点上 需要知道左右子树的高度差
# 计算高度的返回值
# 返回-1的时候 就已经不可能是平衡二叉树
def heigh_( r ):
if not r: return 0
h1 = heigh_( r.left )
if h1 == -1: return -1
h2 = heigh_( r.right )
if h2 == -1: return -1
if abs( h1 - h2 ) > 1: return -1
else: return 1 + max( h1, h2 )
return heigh_( root ) != -1
```