#include<iostream>
using namespace std;
typedef struct BiTNode
{
char data;
struct BiTNode* lchild, * rchild;
}BiTNode, * BiTree;
int flag;
void CreatBitree(BiTree& T, char s[], int& i)
{
if (s[i] == '0')
T = NULL;
else
{
T = new BiTNode;
T->data = s[i];
CreatBitree(T->lchild, s, ++i);
CreatBitree(T->rchild, s, ++i);
}
}
void Judge(BiTree T1, BiTree T2)
{
if (T1 && !T2 || !T1 && T2)
flag = 0;
if (T1 && T2)
{
if (T1->data != T2->data)
flag = 0;
Judge(T1->lchild, T2->lchild);
Judge(T1->rchild, T2->rchild);
}
}
int main()
{
char s1[100], s2[100];
BiTree T1, T2;
while (cin >> s1 && s1[0] != '0')
{
int i = -1, j = -1;
cin >> s2;
CreatBitree(T1, s1, ++i);
CreatBitree(T2, s2, ++j);
flag = 1;
Judge(T1, T2);
if (flag)
cout << "相等" << endl;
else
cout << "不相等" << endl;
}
return 0;
}
二叉树结构相等判断(c++)
于 2022-03-22 18:46:53 首次发布