1. 程式人生 > >劍指offer:輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。

劍指offer:輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。

輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。

//後續遍歷二叉樹,遍歷過程中求子樹高度,判斷是否平衡
class Solution {
public:
    bool IsBalanced(TreeNode *root, int & dep){
        if(root == NULL){
            return true;
        }
        int left = 0;
        int right = 0;
        if(IsBalanced(root->left,left) && IsBalanced(root->right, right)){
            int dif = left - right;
            if(dif<-1 || dif >1)
                return false;
            dep = (left > right ? left : right) + 1;
            return true;
        }
        return false;
    }
    bool IsBalanced_Solution(TreeNode* pRoot) {
        int dep = 0;
        return IsBalanced(pRoot, dep);
    }
};