应用题-二叉树专题-平衡二叉树( 思路非常重要

管理员
```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 ```
评论 0

发表评论 取消回复

Shift+Enter 换行  ·  Enter 发送
还没有评论,来发表第一条吧