c++数据结构与算法实验题目
比较两棵二叉树是否相等(递归算法)
template <class T>
bool BinaryTree<T>::operator==(BinaryTree<T>& bitree) { //6-5 比较二叉树是否相等
if (this->root == bitree.root) { //两二叉树根地址相同
return true;
}
if (this->height() != bitree.height() || this->count() != bitree.count())
{
return false;
}
return isEqual(this->root, bitree.root);
}
template <class T>
bool BinaryTree<T>::isEqual(BinaryNode<T>* p, BinaryNode<T>* q)
{
if (p == NULL || q == NULL) {
return false;
}
else {
if (p->data != q->data) {
return false;
}
if (p->left != NULL || q->left != NULL || q->right != NULL || p->right != NULL) {
if (isEqual(p->left, q->left)) { //左
return isEqual(p->right, q->right);
}
else {
return false;
}
}
}
return true;
}