class Solution {
public:
bool IsBalanced_Solution(TreeNode* pRoot) {
return getHeight(pRoot) == -1 ? false : true;
}
// 返回以该节点为根节点的二叉树的高度,如果不是平衡二叉树了则返回-1
// 后序遍历
int getHeight(TreeNode* node) {
if (node == nullptr) return 0;
int left_height = getHeight(node->left); // 左子树
if (left_height == -1) return -1;
int right_height = getHeight(node->right); // 右子树
if (right_height == -1) return -1;
int res;
if (abs(left_height - right_height) > 1) { // 中
res = -1;
} else {
res = 1 + max(left_height, right_height); // 以当前节点为根节点的树的最大高度
}
return res;
}
};