# 110. Balanced Binary Tree
###### tags: `LeetCode`
## **Link**
https://leetcode.com/problems/balanced-binary-tree/
## **Code**
```cpp=
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
class Solution {
public:
// 樹裡面放什麼數字完全不重要
int dfs(TreeNode* root, bool &ans)
{
int lf=0,ri=0; // 存左右深度
if(root->left!=nullptr) // 左邊有路就往下走
lf=dfs(root->left,ans); // 回傳左邊最深深度
if(root->right!=nullptr) // 右邊有路就往下走
ri=dfs(root->right,ans); // 回傳右邊最深深度
if(abs(lf-ri)>1) // 深度差大於1就不合題目規定
ans=false;
return max(lf,ri)+1; // 回傳比較深的那邊
}
bool isBalanced(TreeNode* root)
{
bool ans=true; // 預設為合法樹
if(root!=nullptr) // 防止空白測資爆掉
dfs(root,ans); // 遞迴,用call by reference傳答案
return ans;
}
};
```
## date
**2023.01.20**
{%hackmd @nnks8908/background_leetcode %}