---
# System prepended metadata

title: leetcode 110. 平衡二叉樹

---

# leetcode 110. 平衡二叉樹

## 概述

這一題主要是判斷二叉樹是否平衡，所謂的平衡指的是樹左右兩邊的子節點深度(depth)相減不能大於1，否則這一顆二叉樹就是不衡的二叉樹。

這一題剛看到就想到了**後序遍歷**，因為是要計算左右兩邊節點的深度，再進行比較，必然需要先遍歷左右兩邊的節點之後，才遍歷到根節點做比較。

```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 __init__(self):
        self.res = True
    def isBalanced(self, root: Optional[TreeNode]) -> bool:
        def dfs(root):
            if not root:
                return 0
            left = dfs(root.left)
            right = dfs(root.right)
            if abs(right - left) > 1:
                self.res = False 
                return 0
            return max(left,right) + 1

        dfs(root)
        return self.res
```