回 帖 发 新 帖 刷新版面

主题:[讨论]二叉树的遍历建树递归算法怎样结束输入?

#include<stdio.h>
#include<malloc.h>
#define datatype char
typedef struct node
{datatype data;
 struct node *lchild,*rchild;
}JD;
JD *crt_bt_pre(JD *bt)
{char ch;
 printf("ch=");
 scanf("%c",&ch);
 if(ch==' ') bt=NULL;
 else 
  {bt=(JD*)malloc(sizeof(JD));
   bt->data=ch;
   bt->lchild=crt_bt_pre(bt->lchild);
   bt->rchild=crt_bt_pre(bt->rchild);
   }
  return(bt);
}

void preorder(JD *bt)
{if(bt!=NULL)
  {printf("%c",bt->data);
   preorder(bt->lchild);
   preorder(bt->rchild);
   }
 }

void main()
 {JD *bt;
  crt_bt_pre(bt);
  preorder(bt);}

这个程序运行起来一直出现ch=
输入一个元素后,又出现ch=ch=
出不来结果,我不知道这个递归算法怎么能实现结束输入结点数据,难道一直这样永无边境的输入东西?

假如我以!为结束输入标志,该怎么实现呢?

回复列表 (共1个回复)

沙发

scanf("%c",&ch);
 if(ch==' ') bt=NULL;
改成
scanf(" %c",&ch);
 if(ch=='!') bt=NULL;

我来回复

您尚未登录,请登录后再回复。点此登录或注册