题目:

  1. 110. 平衡二叉树
  2. 给定一个二叉树,判断它是否是高度平衡的二叉树。
  3. 本题中,一棵高度平衡二叉树定义为:
  4. 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1
  5. 示例 1:
  6. 给定二叉树 [3,9,20,null,null,15,7]
  7. 3
  8. / \
  9. 9 20
  10. / \
  11. 15 7
  12. 返回 true

答案:

时间:

5min

  1. class Solution:
  2. def isBalanced(self, root: TreeNode) -> bool:
  3. def dfs(root):
  4. if not root:return 0
  5. l=dfs(root.left)
  6. r=dfs(root.right)
  7. return max(l,r)+1
  8. def find(root):
  9. if not root:return True
  10. ldepth=dfs(root.left)
  11. rdepth=dfs(root.right)
  12. if abs(ldepth-rdepth)>1:return False
  13. return find(root.left) and find(root.right)
  14. return find(root)

要点:

1. 也可以通过令深度差大于1的为-1,这样可以减少一个递归的函数。

其他:

代码报错:无