题解
- 所求即为:是否有节点的左右子树高度差 > 1
- 树上dfs跑一下即可
AC-Code
class Solution {
public:
bool IsBalanced_Solution(TreeNode* pRoot) {
if(!pRoot) return true;
return dfs(pRoot) != -1;
}
int dfs(TreeNode* now) {
if(!now) return 0;
int lnum = 0, rnum = 0; // 别忘了初始化
if(now->left)
lnum = dfs(now->left);
if(now->right)
rnum = dfs(now->right);
if(abs(lnum - rnum) > 1 || lnum == -1 || rnum == -1) {
return -1;
}
return max(lnum, rnum) + 1;
}
};