110. 平衡二叉树 - 力扣(LeetCode) (leetcode-cn.com)
平衡二叉树
- 深度:根节点到某节点的最⻓简单路径边的条数
- 高度:某结点到叶子的最长简单路径边的条数
- 树的深度(最深) == 树的高度(最高),那么按深度求
class Solution {
public:
int getDepth(TreeNode* node) {
if (!node) return 0;
// 如果子树不平衡,那么整体不平衡
// 返回 -1 表示不平衡
int leftDepth = getDepth(node->left);
if (leftDepth == -1) return -1;
int rightDepth = getDepth(node->right);
if (rightDepth == -1) return -1;
// 如果子树平衡,则判断当前树是否平衡
return abs(leftDepth - rightDepth) > 1 ? -1 : 1 + max(leftDepth, rightDepth);
}
bool isBalanced(TreeNode* root) {
return getDepth(root) == -1 ? false : true;
}
};