
题解
- 所求即为:是否有节点的左右子树高度差 > 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;
}
};
本文介绍了一种用于判断二叉树是否平衡的算法。通过深度优先搜索(DFS)遍历树,比较每个节点的左右子树高度差,确保差值不超过1,以此判断整棵树的平衡性。代码实现采用C++,并提供了完整的AC-Code。
172万+

被折叠的 条评论
为什么被折叠?



