| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1144 人关注过本帖
标题:帮忙看下这个2叉树的建立
只看楼主 加入收藏
wrg0709
Rank: 1
来 自:ss
等 级:新手上路
帖 子:81
专家分:0
注 册:2007-12-3
收藏
 问题点数:0 回复次数:13 
帮忙看下这个2叉树的建立
#include"stdio.h"
typedef struct a{
 char b;
 struct a *l,*r;  
}c;
void maketree(c *q);
void zhongxu(c *q);
main()
{
  c *h;
  maketree(h);
  zhongxu(h);
  return 0;
}
void maketree(c *q)            /*中序输入*/
{
   c *p;
   char x;
   p=(c *)malloc(sizeof(c));
   q=p;
   printf("plesase enter the data\n");
   p->b=getche();                                                 /*输入节点的数据域*/
   printf("if you don't want to the left plesase enter the '#'\n");
   x=getche();      
  if(x!='#')                                                       /*判断有没左孩子*/
  maketree(p->l);
  else
   p->l=NULL;
  printf("if you don't want to the right plesase enter the '#'\n");
   x=getche();
  if(x!='#')                                                           /*判断有没右孩子*/
  maketree(p->r);
   else
   p->r=NULL;
}
void zhongxu(c *q)  /*中序输出*/
{
 if(q!=NULL)
 {
  printf("%c",q->b);
  zhongxu(q->l);
  zhongxu(q->r);
 }
}
代码问题是输不出结果来,但本人感觉在建立2叉树上逻辑上是正确的
先谢了
搜索更多相关主题的帖子: void include return 
2008-05-10 17:09
wrg0709
Rank: 1
来 自:ss
等 级:新手上路
帖 子:81
专家分:0
注 册:2007-12-3
收藏
得分:0 
有点急

程序员的日子就是 泡面+电脑+床
2008-05-10 17:30
wrg0709
Rank: 1
来 自:ss
等 级:新手上路
帖 子:81
专家分:0
注 册:2007-12-3
收藏
得分:0 
...

程序员的日子就是 泡面+电脑+床
2008-05-10 17:41
wrg0709
Rank: 1
来 自:ss
等 级:新手上路
帖 子:81
专家分:0
注 册:2007-12-3
收藏
得分:0 
....

程序员的日子就是 泡面+电脑+床
2008-05-10 17:49
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
你的树是死循环...只有递推没有回归...根接点也是有问题的....

学习需要安静。。海盗要重新来过。。
2008-05-10 17:58
wrg0709
Rank: 1
来 自:ss
等 级:新手上路
帖 子:81
专家分:0
注 册:2007-12-3
收藏
得分:0 
怎么有问题 根节点我通过那个方法也实现了
   再一个你说的回归是什么

程序员的日子就是 泡面+电脑+床
2008-05-10 18:02
wrg0709
Rank: 1
来 自:ss
等 级:新手上路
帖 子:81
专家分:0
注 册:2007-12-3
收藏
得分:0 
......

程序员的日子就是 泡面+电脑+床
2008-05-10 18:41
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
#include <iostream>
using namespace std;
typedef struct binarytree
{
    char c;
    struct binarytree *plchild;
    struct binarytree *prchild;
}btr;
void  bbtr(btr *p,int i)
{   
     
     p->c='A'+i;
     p->plchild=NULL;
     p->prchild=NULL;
     if(i>0)
     {
     p->plchild=(btr *)malloc(sizeof(btr));
     p->prchild=(btr *)malloc(sizeof(btr));
     bbtr(p->plchild,i-1);
     bbtr(p->prchild,i-1);
     }
}

void  bbtrs(btr *p)
{   
   
     if(p!=NULL)
     {
        bbtrs(p->plchild);
        printf("%c",p->c);
        bbtrs(p->prchild);
        
     }
}
int  main()
{   
    btr *p;
    char c;
    p=(btr *)malloc(sizeof(btr));
    cout<<"请输出大写字母."<<endl;
    cin>>c;
    bbtr(p,c-'A');
    bbtrs(p);
    return 0;
   
}

学习需要安静。。海盗要重新来过。。
2008-05-10 18:45
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
刚才没仔细看...p=head=null;  p=q=malloc(sizeof(*..));你的head还是空的...下面都涉及这个问题..递归创建的过程...结果就不是树了..都以接点形式存在....

学习需要安静。。海盗要重新来过。。
2008-05-10 18:49
wrg0709
Rank: 1
来 自:ss
等 级:新手上路
帖 子:81
专家分:0
注 册:2007-12-3
收藏
得分:0 
main()
{
  c *h;
  maketree(h);
  zhongxu(h);
  return 0;
}
void maketree(c *q)            /*中序输入*/
{
   c *p;
   char x;
   p=(c *)malloc(sizeof(c));  
   q=p;
 我先调用maketree(h); h传给void maketree(c *q)中的q  p=(c *)malloc(sizeof(c)); 再为p分配内存
 q=p; 把p赋给q 那么我的头指针(即根节点)怎么可能是空

程序员的日子就是 泡面+电脑+床
2008-05-10 19:00
快速回复:帮忙看下这个2叉树的建立
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016918 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved