我一直在编码一个在祖先和节点之间寻找最大值的二叉树问题,我已经用两种方式对其进行了编码,但是它提供了两种不同的答案,如何?
int res=INT_MIN;
int maxDiff(Node* root){
if(root==NULL){
return INT_MAX;
}else if(root->left==NULL && root->right==NULL){
return root->data;
}else{
int mini = min(maxDiff(root->left),maxDiff(root->right));
res = max(res,root->data-mini);
return min(mini,root->data);
}
}
Print(res); //Printing ans
另一个是....
int helpmaxDiff(Node* root,int *res){
if(root==NULL){
return INT_MAX;
}else if(root->left==NULL && root->right==NULL){
return root->data;
}else{
int mini = min(helpmaxDiff(root->left,res),helpmaxDiff(root->right,res));
*res = max(*res,(root->data)-mini);
return min(mini,root->data);
}
}
int maxDiff(Node* root)
{
int res=INT_MIN;
// Your code here
helpmaxDiff(root,&res);
print(res); //printing res
}
https://practice.geeksforgeeks.org/problems/maximum-difference-between-node-and-its-ancestor/1
这是我正在编码的问题。
我发现以res为全局变量的函数失败,而以res为指针变量的函数(也作为参数)运行良好。