平衡二叉树
C++,AVL树,就是左右子树的高度差不能超过1,这个很容易判断啦。
注意,本题说的AVL树不一定遵照BST树的规则,搞得我以开始一直按BST+平衡的标准去写。。。
class Solution {
public:
bool IsBalanced_Solution(TreeNode* pRoot) {
bool ans = true;
Inorder(pRoot, ans);
return ans;
}
void Inorder(TreeNode* root, bool &ans) {
if (!root) return ;
Inorder(root->left, ans);
if (abs(GetH(root->left) - GetH(root->right)) > 1)
ans = false;
Inorder(root->right, ans);
}
int GetH(TreeNode* root) {
if (!root) return 0;
else
return max(GetH(root->left), GetH(root->right)) + 1;
}
};