当且仅当当前节点的数据大于左根和右根之和时,让我们定义一棵称为“最大树”的二叉树。
例子:
不是最大树:
没有辅助函数,只有递归。
原型是:
int IsMaxTree(BitNode *root)
当且仅当当前节点的数据大于左根和右根之和时,让我们定义一棵称为“最大树”的二叉树。
例子:
不是最大树:
没有辅助函数,只有递归。
原型是:
int IsMaxTree(BitNode *root)
只需一个简单的递归即可解决此问题。
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;
}
}