认真好学的小明 2021-07-05 12:14 采纳率: 100%
浏览 119
已采纳

从网络上找到一个二叉树的遍历代码,这个输入数据时怎么结束输入啊

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include <malloc.h>
#define error 0
#define ok 1
typedef struct BiTNode
{
char data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
int CreateBiTree(BiTree &T)
{
char ch;
scanf("%c",&ch);
if(ch=='#') T=NULL;
else
{
if(!(T=(BiTNode *)malloc(sizeof(BiTNode))))
exit(error);
T->data=ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
return ok;
}
void PreOrderBiTree(BiTree T)
{
if(T)
{
printf("%c",T->data);
PreOrderBiTree(T->lchild);
PreOrderBiTree(T->rchild);
}
}
void InOrderBiTree(BiTree T)
{
if(T)
{
InOrderBiTree(T->lchild); //中序遍历左子树
printf("%c",T->data); //访问结点
InOrderBiTree(T->rchild); //中序遍历右子树
}
}
void PostOrderBiTree(BiTree T)
{
if(T)
{
PostOrderBiTree(T->lchild);
PostOrderBiTree(T->rchild);
printf("%c",T->data);
}
}
main()
{
int i;
BiTree T;
printf("\t请输入树的各元素:\n\t");
CreateBiTree(T);
do
{
printf(" /*****************************/\n");
printf("\t1键:先序输出; \n\t2键:中序输出;\n\t3键:后序输出!\n\t0键:退出程序!\n");
printf("\t请输入你的选择:\n\t");
scanf("%d",&i);
switch(i)
{
case 1:printf("\n\t你选择的是先序输出!! \n");
printf("\n\t输出结果为:\n");
printf("\t");
PreOrderBiTree(T);break;
case 2:printf("\n\t你选择的是中序输出!! \n");
printf("\n\t输出结果为:\n");
printf("\t");
InOrderBiTree(T);break;
case 3:printf("\n\t你选择的是后序输出!! \n");
printf("\n\t输出结果为:\n");
printf("\t");
PostOrderBiTree(T);break;
}
printf("\n");
}while(i!=0);
return 0;
}

img

img

  • 写回答

2条回答 默认 最新

  • 暗夜无风 2021-07-05 14:31
    关注

    img

    这不就可以退出吗。因为其代码原因,你输入元素时不可有空格、回车,否则会记录为元素,并最后以'#'结尾。

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改