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

论坛 期权论坛 期权     
爱笑的笔迹   2018-4-28 02:18   3085   2
#include#includetypedef struct node{ int data; struct node*rchild; struct node *lchild;}btnode;btnode *creat(){ btnode*t; int  m; scanf("%d",&m); if(m==0)  t=NULL; else {  t=(btnode*)malloc(sizeof(btnode)...#include
#include
typedef struct node
{
int data;
struct node*rchild;
struct node *lchild;
}btnode;
btnode *creat()
{
btnode*t;
int  m;
scanf("%d",&m);
if(m==0)
  t=NULL;
else
{
  t=(btnode*)malloc(sizeof(btnode));
  t->data=m;
  t->lchild=creat();
  t->rchild=creat();

}
return t;
}
int getmax(btnode*t,int max)
{
if(t!=NULL)
{  if(maxdata)
     max=t->data;
    getmax(t->lchild,max);
  getmax(t->rchild,max);

}
return max;
}
void main()
{
btnode *p;
int max;
p=creat();
max=p->data;
printf("max=%d\n",getmax(p,max));

}

展开

分享到 :
0 人收藏

2 个回复

正序浏览
3#
flytomylife  2级吧友 | 2018-4-30 01:12:56
这里的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;
2#
捐你妹8  2级吧友 | 2018-4-30 01:12:55
问题出在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聽data)
聽聽聽聽聽聽聽聽聽聽聽聽*max聽=聽t->data;
聽聽聽聽聽聽聽聽getmax(t->lchild,聽max);
聽聽聽聽聽聽聽聽getmax(t->rchild,聽max);
聽聽聽聽}
聽聽聽聽return聽*max;
}另外,你要注意你的编码格式了。需要按照一定的格式来编写,这样可以让别人看的时候更清晰。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP