如果两个二叉树根节点值相等,
同时其左子树,右子树都相等,
则两二叉树相等。
// 判断两二叉树是否相等
bool IsBiTreeEqual(BTNode* pRoot1, BTNode* pRoot2)
{
if (NULL == pRoot1 && NULL == pRoot2)
return true;
if (pRoot1 != NULL && pRoot2 == NULL ||
pRoot1 == NULL && pRoot2 != NULL)
return false;
if (pRoot1->nData != pRoot2->nData)
return false;
return IsBiTreeEqual(pRoot1->pLeft, pRoot2->pLeft) &&
IsBiTreeEqual(pRoot1->pRight, pRoot2->pRight);
}
当然,如果规则规定节点的左子树和相同位置节点的右子树相等,
同时节点的右子树和相同位置节点的左子树相等 也属于节点相等的范畴内。
上面的return语句改为
return IsBiTreeEqual(pRoot1->pLeft, pRoot2->pLeft) &&
IsBiTreeEqual(pRoot1->pRight, pRoot2->pRight) ||
IsBiTreeEqual(pRoot1->pLeft, pRoot2->pRight) &&
IsBiTreeEqual(pRoot1->pRight, pRoot2->pLeft);