-1

当且仅当当前节点的数据大于左根和右根之和时,让我们定义一棵称为“最大树”的二叉树。

例子:

图片

不是最大树:

图片

没有辅助函数,只有递归。

原型是:

int IsMaxTree(BitNode *root)
4

1 回答 1

2

只需一个简单的递归即可解决此问题。

int IsMaxTree(BitNode *root) {
    int left;
    int right;
    if (root == NULL) {
        return 0;
    }
    left = IsMaxTree(root->left);
    if (left == -1) {
        return -1;
    }
    right = IsMaxTree(root->right);
    if (right == -1) {
        return -1;
    }
    if (root.val > left + right) {
        return left + right + root.val;
    }
    else {
        return -1;
    }
}
于 2013-07-08T16:55:42.733 回答