学习型 ASP/PHP/ASP.NET 主机 30元/年全能 ASP/PHP/ASP.NET 主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付
 14 12
发新话题
打印

帮忙看下这个2叉树的建立

帮忙看下这个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叉树上逻辑上是正确的
先谢了

TOP

有点急
程序员的日子就是 泡面+电脑+床

TOP

...
程序员的日子就是 泡面+电脑+床

TOP

....
程序员的日子就是 泡面+电脑+床

TOP

你的树是死循环...只有递推没有回归...根接点也是有问题的....
学习需要安静。。海盗要重新来过。。

TOP

怎么有问题 根节点我通过那个方法也实现了
   再一个你说的回归是什么
程序员的日子就是 泡面+电脑+床

TOP

......
程序员的日子就是 泡面+电脑+床

TOP

#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;
   
}
学习需要安静。。海盗要重新来过。。

TOP

刚才没仔细看...p=head=null;  p=q=malloc(sizeof(*..));你的head还是空的...下面都涉及这个问题..递归创建的过程...结果就不是树了..都以接点形式存在....
学习需要安静。。海盗要重新来过。。

TOP

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 那么我的头指针(即根节点)怎么可能是空
程序员的日子就是 泡面+电脑+床

TOP

 14 12
发新话题