思路:两棵树相等当且仅当rootA->data == rootB->data,且A和B的左右子树相等或左右子树互换相等
用递归的方式进行求解
(1)if(两棵树都为空)返回true
(2)if(两棵树中一棵为空,另一棵不为空)返回false
(3)if(数据相等)
{
if(两棵树的左子树相等)
{
if(两棵树的右子树相等)
return true;
}
else if(第一棵树的左子树与第二棵树的右子树相等)
if(第一棵树的右子树与第二棵树的左子树相等)
return true;
}
else return false;
typedef struct Node
{
char data;
Node *lChild, *rChild, *parent;
}BNode, *BTree;
bool compTree(BTree a, BTree b)
{
if(a == NULL && b == NULL)
return true;
if(a == NULL && b != NULL || a != NULL && b == NULL)
return false;
if(a->data == b->data)
{
if(compTree(a->lChild, b->lChild))
return compTree(a->rChild, b->rChild))
else if(compTree(a->lChild, b->rChild))
return compTree(a->rChild, b->lChild);
}
return false;
}