Brave____heart 2021-05-20 20:14 采纳率: 100%
浏览 24
已采纳

求助,这个用结构数组建立二叉树的程序为什么输入'C'这个字符会出错啊?

 

//mooc第四讲小白专场判别两个二叉树是否同构 //输入C会出错,找不到原因 
#include<stdio.h>
#include<stdlib.h>
#define Null -1
#define MaxTree 10
typedef char ElementType;
typedef int Tree;
struct TreeNode{
	ElementType Element;
	Tree Left;
	Tree Right;
}T1[MaxTree],T2[MaxTree];
Tree BuildTree(struct TreeNode T[]);
int Isomorphic(Tree R1,Tree R2);
int main()
{
	Tree R1,R2;
	R1=BuildTree(T1);
	R2=BuildTree(T2);
	if(Isomorphic(R1,R2))printf("yes\n");
	else printf("no\n");
	return 0;
}
//建立树 
Tree BuildTree(struct TreeNode T[])
{
	int i,N,Root=Null;
	char cl,cr;
	printf("请输入树中元素的个数\n");
	scanf("%d",&N);
	int check[N];
	if(N){
		for(i=0;i<N;i++)check[i]=0;
		for(i=0;i<N;i++){
			printf("请输入T[%d]的Element、Left、Right,中间用空格隔开\n",i);
			scanf("%c %c %c\n",&T[i].Element,&cl,&cr);
			if(cl!='-'){
			T[i].Left=cl-'0';
			check[T[i].Left]=1;
			}
			else T[i].Left=Null;
			if(cr!='-'){
			T[i].Right=cr-'0';
			check[T[i].Right]=1;
			}
			else T[i].Right=Null;
		}
	} 
	for(i=0;i<N;i++){
		if(!check[i]){
			Root=i;
			break;
		}
	}
	return Root;
}
//判断树是否同构 
int Isomorphic(Tree R1,Tree R2)
{
	if((R1==Null)&&(R2==Null))
		return 1;
	if(((R1==Null)&&(R2!=Null))||((R1!=Null)&&(R2==Null)))
		return 0;
	if(T1[R1].Element!=T2[R2].Element)
		return 0;
	if((T1[R1].Left==Null)&&(T2[R2].Left==Null)) 
		return Isomorphic(T1[R1].Right,T2[R2].Right);
	if((T1[R1].Left!=Null)&&(T2[R2].Left!=Null)&&(T1[T1[R1].Left].Element==T2[T2[R2].Left].Element))
		return (Isomorphic(T1[R1].Left,T2[R2].Left)&&Isomorphic(T1[R1].Right,T2[R2].Right));
	else
		return (Isomorphic(T1[R1].Left,T2[R2].Right)&&Isomorphic(T1[R1].Right,T2[R2].Left));
}
  • 写回答

3条回答 默认 最新

  • 关注

    scanf("%c %c %c\n",&T[i].Element,&cl,&cr); 改为 fflush(stdin); scanf("%c",&T[i]); fflush(stdin); scanf("%c",&cl); fflush(stdin); scanf("%c",&cr);

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

报告相同问题?

悬赏问题

  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因