思路:
看左右的差绝对值是不是大于1
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) :val(x), left(NULL), right(NULL) {}
};
class Solution {
public:
bool BalanceTree(TreeNode* root) {
return isBalance(root) != -1;
}
int isBalance(TreeNode* root) {
if (root == NULL)return 0;
int leftH = isBalance(root->left);
if (leftH == -1)return -1;
int rightH = isBalance(root->right);
if (rightH == -1)return -1;
if (abs(leftH - rightH) > 1) {
return -1;
}
else {
return 1 + max(leftH, rightH);
}
}
};
int main() {
TreeNode* A = new TreeNode(3);
TreeNode* B = new TreeNode(9);
TreeNode* C = new TreeNode(20);
TreeNode* D = new TreeNode(15);
TreeNode* E = new TreeNode(7);
A->left = B;
A->right = C;
C->left = D;
C->right = E;
Solution ss;
cout << ss.BalanceTree(A) << endl;
return 0;
}