leetcode 110 平衡二叉树
思路
- dfs 左右子树,每一层都记录最大记录深度 + 1;
- 在某个结点深度不合法时,false;
题解
class Solution {
public:
bool isBalanced(TreeNode* root) {
dfs(root);
return flag;
}
private:
bool flag = true;
int dfs(TreeNode* root) {
if(root == NULL) return 0;//递归结束条件
int left_d = dfs(root->left);//记录深度
int right_d = dfs(root->right);
//左右深度不合法
if(abs(left_d - right_d) > 1) flag = false;
//递归返回时每一层最大深度+1
return max(left_d, right_d) + 1;
}
};