剑指offer 55 是否平衡二叉树

2020-05-05  本文已影响0人  再凌

输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。

看似简单的一道题, 为啥我就做不出来呢???

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */

int _caculate(struct TreeNode* root){
    if(root==NULL){
        return 0;
    }
    int left=_caculate(root->left);
    int right=_caculate(root->right);
    if(left!=-1&&right!=-1&&abs(left-right)<2){
        if(left>right){
            return left+1;
        }else{
            return right+1;
        }
    }else{
        return -1;
    }
}

bool isBalanced(struct TreeNode* root){
    int res = _caculate(root);
    if(res == -1){
        return false;
    }else{
        return true;
    }
}

上一篇 下一篇

猜你喜欢

热点阅读