C语言二叉树求最大值求指点?
答案:2 悬赏:80 手机版
解决时间 2021-03-24 22:09
- 提问者网友:藍了天白赴美
- 2021-03-24 06:44
C语言二叉树求最大值求指点?
最佳答案
- 五星知识达人网友:拜訪者
- 2021-03-24 07:44
问题出在max这个变量上。临时变量么有返回。可以将这个函数
int getmax(btnode*t,int max)
{
if(t!=NULL)
{
if(maxdata)
max=t->data;
getmax(t->lchild,max);
getmax(t->rchild,max);
}
return max;
}
修改为:
int getmax(btnode *t, int* max)
{
if(t != NULL)
{
if(*max < t->data)
*max = t->data;
getmax(t->lchild, max);
getmax(t->rchild, max);
}
return *max;
}另外,你要注意你的编码格式了。需要按照一定的格式来编写,这样可以让别人看的时候更清晰。
来自:求助得到的回答
int getmax(btnode*t,int max)
{
if(t!=NULL)
{
if(max
max=t->data;
getmax(t->lchild,max);
getmax(t->rchild,max);
}
return max;
}
修改为:
int getmax(btnode *t, int* max)
{
if(t != NULL)
{
if(*max < t->data)
*max = t->data;
getmax(t->lchild, max);
getmax(t->rchild, max);
}
return *max;
}另外,你要注意你的编码格式了。需要按照一定的格式来编写,这样可以让别人看的时候更清晰。
来自:求助得到的回答
全部回答
- 1楼网友:雾月
- 2021-03-24 08:59
这里的max是一个局部变量,当然不对了,其实最后递归之后返回的结果,仅仅是第一次调用得到的max的值。
int getmax(btnode*t,int max)
{
if(t!=NULL)
{ if(maxdata)
max=t->data;
getmax(t->lchild,max);
getmax(t->rchild,max);
}
return max;
}
有两种修改的思路
1. 让每次调用,都修改同一个max,修改参数为指针
int getmax(btnode*t,int *max)
{
if(t!=NULL)
{ if(*maxdata)
*max=t->data;
getmax(t->lchild,max);
getmax(t->rchild,max);
}
return max;
}
2. 修改逻辑,个人更喜欢下面的这个逻辑
int getmax(btnode * t){
int cur_max = t->data;
if(t->left!=NULL){
int cur_value = getmax(t->left);
if(cur_value > cur_max)
cur_max = cur_value;
}
if(t->right!=NULL){
int cur_value = getmax(t->right);
if(cur_value>cur_max)
cur_max = cur_value;
}
}
return cur_max;
int getmax(btnode*t,int max)
{
if(t!=NULL)
{ if(max
max=t->data;
getmax(t->lchild,max);
getmax(t->rchild,max);
}
return max;
}
有两种修改的思路
1. 让每次调用,都修改同一个max,修改参数为指针
int getmax(btnode*t,int *max)
{
if(t!=NULL)
{ if(*max
*max=t->data;
getmax(t->lchild,max);
getmax(t->rchild,max);
}
return max;
}
2. 修改逻辑,个人更喜欢下面的这个逻辑
int getmax(btnode * t){
int cur_max = t->data;
if(t->left!=NULL){
int cur_value = getmax(t->left);
if(cur_value > cur_max)
cur_max = cur_value;
}
if(t->right!=NULL){
int cur_value = getmax(t->right);
if(cur_value>cur_max)
cur_max = cur_value;
}
}
return cur_max;
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯