永发信息网

C语言二叉树求最大值求指点?

答案:2  悬赏:80  手机版
解决时间 2021-03-24 22:09
C语言二叉树求最大值求指点?
最佳答案
问题出在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;
}另外,你要注意你的编码格式了。需要按照一定的格式来编写,这样可以让别人看的时候更清晰。
来自:求助得到的回答
全部回答
这里的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;
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
保定涞源九和嘉苑有五证吗
儿子不想上学怎么办 可以让他休学么?
睡觉什么姿势最解乏?
我想摘两颗星给你 是什么歌
深港驾校锦绣江南·服务店(报名处)地址在哪,
1989年农历4月初8是什么星座 一生会怎样
浙江嘉兴大还是山西长治大
请问哪有免费的招聘软件啊?要好用的……
老人过生日送什么折纸好
倩碧净颜净肤水怎么样
the girl is only nine, she takes care of h
一叶障目中的楚国人去寻找树叶是为什么?他把
猜谜语!!猜中有奖!!
询问宜家这种吊顶大家知道可行吗
罗田那个装饰公司好?
推荐资讯
昆明出省的车票在那里买
香菇炖鸡和小鸡炖蘑菇的区别
单选题建立细胞学说的两位主要科学家是A.虎克
浙江南浔产橡木吗?会有假吗?
坐公交给老人家让座 a 什么意思
中国哪个隧道挖了八十年?
为什么linux开的端口自己关闭
谁有朋友你听说过战舰少女r吗的图
澄清石灰水中澄读什么?
中国怎么有的字谜
什么运动鞋好
马倩倩艺术签名怎么写?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?