二叉树同构与实现——参考浙江大学.数据结构

二叉树同构与实现——参考浙江大学.数据结构

项目 A B C D
left -1 2 -1 -1
right 1 3 -1 -1

A-B-C-D

Column 1 Column 2
centered 文本居中 right-aligned 文本居右

新的改变

#include<stdio.h>
#include<string.h>
#define MaxTree 10
#define ElemType char
#define Tree int
#define Null -1

struct TreeNode{
	ElemType Element;
	Tree left;
	Tree right;
}T1[MaxTree],T2[MaxTree];
int  BuildTree(struct TreeNode T[]);
int Isomorphic(int ,int );
int main()
{
	//int chea[1];

	Tree R1, R2;
	R1 = BuildTree(T1);
	R2 = BuildTree(T2);
	if (!Isomorphic(R1,R2))
		printf("YES\n");
	else printf("NO");
	getchar();
	return 0;
}
int BuildTree(struct TreeNode T[])
{
	int N,root;
	
	char cl, cr;
	scanf_s("%d",&N);
	int check[N];
	if (N)
	{
		
		for (int i = 0; i < N; i++) check(i) = 0;//创建check数组,一次遍历数组树,暂存每次遍历节点是否被指向
		for (int i = 0; i < N; i++)
		{
			scanf_s("%c %c %c",&T[i].Element,&cl,&cr);
			if (cl != '-')
			{
				T[i].left = cl - '0';
				check[i] = 1;

			}
			else T[i].left = Null;
			if (cl != '-')
			{
				T[i].right = cl - '0';
				check[i] = 1;//若不为NULL,置1

			}
			else T[i].right = Null;//为Null,z置-1
		}
	}
	for (int i = 0; i < N; i++)
	if (! check(i))  root = i;//查找根节点,遍历数组不为1的点就是根节点

	return root;

}

int Isomorphic(Tree T)
{
	if (() && ())
		return 1;
}


猜你喜欢

转载自blog.csdn.net/qq_40416375/article/details/107677634
今日推荐