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条)

报告相同问题?

悬赏问题

  • ¥15 电路原理(关键词-工作原理)
  • ¥15 yolov5s模型下载就卡住,没有运行结果
  • ¥15 请问代码技术们,云梦建站的这个坑你们踩过吗?
  • ¥20 androidstudio工具问题
  • ¥15 想问一些关于计量的问题
  • ¥15 关于c++外部库文件宏的问题,求解
  • ¥15 office打开卡退(新电脑重装office系统后)
  • ¥300 FLUENT 火箭发动机燃烧EDC仿真
  • ¥15 【Hadoop 问题】Hadoop编译所遇问题hadoop-common: make failed with error code 2
  • ¥15 vb6.0+webbrowser无法加载某个网页求解