void CreateBiTree(BiTree *bt) {
char ch;
scanf("%c", &ch);
getchar();
if (ch == '.')
*bt = NULL;//空节点
else
{
*bt = (BitNode *)malloc(sizeof(BitNode));
(*bt)->data = ch;//根节点
CreateBiTree(&((*bt)->LChild));//递归创建左子树
CreateBiTree(&((*bt)->RChild));//递归创建右子树
}
}
int PreOrder(BiTree root1, BiTree root2) {
if (root1 == NULL && root2 == NULL)//两个树均为空的情况,认为是相等的
return TRUE;
else if (root1 != NULL && root2 != NULL)//两个树均不为空的情况
{
if (Compare(root1->data, root2->data))//对比节点值,如果相等继续向下遍历
{
if (PreOrder(root1->LChild, root2->LChild) && PreOrder(root1->RChild, root2->RChild))
return TRUE;//左右子树都相等才返回TRUE
else
return FALSE;
}
else//如果节点不相等则返回FALSE
return FALSE;
}
else//一个为空,一个不为空,认为是不等的
return FALSE;
}