二叉树同构与实现——参考浙江大学.数据结构
项目 |
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()
{
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;
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;
}
else T[i].right = Null;
}
}
for (int i = 0; i < N; i++)
if (! check(i)) root = i;
return root;
}
int Isomorphic(Tree T)
{
if (() && ())
return 1;
}