平衡二叉树

你快乐吗?

Posted by bbkgl on September 26, 2019

平衡二叉树

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;
    }
};