首先需要判断特殊情况,如果两颗二叉树都为空树则相同,否则,依次遍历这颗二叉树,每个结点都相同,这颗二叉树就相同。
定义二叉树结点结构并为每个结点开辟空间
#define END '#'
typedef struct BtNode //BinaryTreeNode
{
BtNode *leftchild;
BtNode *rightchild;
ElemType data;
}BtNode,*BinaryTree;
BtNode * Buynode()
{
BtNode *s = NULL;
#ifndef CPP
s = (BtNode*)malloc(sizeof(BtNode));
if(s == NULL) exit(1);
#else
s = new BtNode();
#endif
memset(s,0,sizeof(BtNode));
return s;
}
void Freenode(BtNode *p)
{
#ifndef CPP
free(p);
#else
delete p;
#endif
}
创建二叉树
BtNode * CreateTree3(char *&str)
{
BtNode *s = NULL;
if(NULL != str && *str != END)
{
s = Buynode();
s->data = *str;
s->leftchild = CreateTree3(++str);
s->rightchild = CreateTree3(++str);
}
return s;
}
判断两颗树是否相同的函数
bool Check(