leetcode 110 Balanced Binary Tree

判断是否平衡二叉树。

bool isBalanced(TreeNode* root) {
    if (root == NULL)
        return true;
    return getDepth(root)?true:false;
}

int getDepth(TreeNode* n) {
    if (n->left == NULL && n->right == NULL)
        return 1;
    
    if (!n->left || !n->right) {
        if (n->left && n->left->left == NULL && n->left->right == NULL ||
            n->right && n->right->left == NULL && n->right->right == NULL)
            return 2;
        return 0;
    }
    
    int l = getDepth(n->left);
    int r = getDepth(n->right);
    if (!l || !r)
        return 0;
    
    return abs(r - l) > 1?0:1 + max(l, r);
}

中间多了个判断,剪枝。

posted on 2018-01-24 13:35  willaty  阅读(98)  评论(0编辑  收藏  举报

导航