📑 题目:110. 平衡二叉树

🚀 本题 LeetCode 传送门

题目大意

判断一棵树是不是平衡二叉树。平衡二叉树的定义是:树中每个节点都满足左右两个子树的高度差 <= 1 的这个条件。

解题思路

根据定义判断即可,计算树的高度是第 104 题。

代码

  1. package leetcode
  2. /**
  3. * Definition for a binary tree node.
  4. * type TreeNode struct {
  5. * Val int
  6. * Left *TreeNode
  7. * Right *TreeNode
  8. * }
  9. */
  10. func isBalanced(root *TreeNode) bool {
  11. if root == nil {
  12. return true
  13. }
  14. leftHight := depth(root.Left)
  15. rightHight := depth(root.Right)
  16. return abs(leftHight-rightHight) <= 1 && isBalanced(root.Left) && isBalanced(root.Right)
  17. }
  18. func depth(root *TreeNode) int {
  19. if root == nil {
  20. return 0
  21. }
  22. return max(depth(root.Left), depth(root.Right)) + 1
  23. }