注册 登录
编程论坛 数据结构与算法

前序递归建立二叉树,怎么调用呀

dolly1822 发布于 2010-11-28 12:14, 1072 次点击
这是编写的程序,就是不知道怎么调用,输入数据后会出现死循环,无法结束,求解呀!
BTNode *Create_BiTree2()
{
  BTNode *t;
  int i;
  char c;
  scanf("%c",&c);
  if(c=='#') return(NULL);
  else
  {
    t=(BTNode*)malloc(sizeof(BTNode));
    t->cdata=c;
    t->lchild=Create_BiTree2();
    t->rchild=Create_BiTree2();
  }
  return(t);
}
6 回复
#2
yan8767683902010-11-28 20:40
最好把完整的代码粘贴出来................
#3
modify2010-11-29 22:35
不知道是不是这个问题,输入的时候要按照前序输入,比如这样输入:ABC##DE#G##F###
#4
outsider_scu2010-11-30 17:46
你是一个一个输入的吗?
如果不清空缓冲区,就一次性输入,中间没空格。
#5
chenhaiquanw2010-12-01 07:49
/*部分代码*/
typedef struct BiTNode
{
   TElemType data;
   struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;

BiTree CreatBiTree(BiTree T)
{
  int ch;
  cin>>ch;
  if(ch==1000)
    T=NULL;
   else
   {
       T=(BiTree)malloc(sizeof(BiTNode)) ;
            if(!T)
                  exit(OVERFLOW);
         
                T->data=ch;
                 
        T->lchild=CreatBiTree(T->lchild);
        T->rchild=CreatBiTree(T->rchild);
   }
return T;
}
/*楼主需要在函数中传递一个参数,即节点指针设BiTree root.上面的程序中节点中存放的是整型,不过道理是一样的.在主函数中调用时可以这样root=createBiTree(root);输入数据例:1 1000 1000  ; 这样就结束了(1000代表空)*/
#6
渊奇绝2010-12-05 21:23
typedef struct BiTNode
{
   char data;
   struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;

void CreatBiTree(BiTree *T)
{
  char ch;
  getchar()
  if(ch=='#')
    *T=NULL;
  else
  {
        *T=(BiTree)malloc(sizeof(BiTNode)) ;
        *T->data=ch;
        CreatBiTree(*T->lchild);
        CreatBiTree(*T->rchild);
   }
return *T;
}
调用
int main()
{
    BiTree T;
    CreatBiTree(&T);
}
#7
dolly18222010-12-12 14:26
懂了,谢谢啦
1