编写函数bool isEqualTree(BiTNode *T1,BiTNode *T2) , 判别两颗二叉树是否相等,并给出完整代码
时间: 2024-02-22 16:00:09 浏览: 74
好的,以下是完整的C++代码实现,包括二叉树的结构体和创建二叉树的函数:
```c++
#include <iostream>
using namespace std;
// 二叉树结点结构体
typedef struct BiTNode {
int data;
BiTNode *lchild, *rchild;
} BiTNode, *BiTree;
// 创建二叉树
void createBiTree(BiTree &T) {
int data;
cin >> data;
if (data == 0) { // 输入0表示该节点为空
T = nullptr;
} else {
T = new BiTNode;
T->data = data;
createBiTree(T->lchild); // 递归创建左子树
createBiTree(T->rchild); // 递归创建右子树
}
}
// 判断两个二叉树是否相等
bool isEqualTree(BiTree T1, BiTree T2) {
if (T1 == nullptr && T2 == nullptr) { // 两颗树均为空,返回true
return true;
}
if (T1 == nullptr || T2 == nullptr) { // 有一颗树为空,返回false
return false;
}
if (T1->data != T2->data) { // 根节点数据不相等,返回false
return false;
}
bool leftEqual = isEqualTree(T1->lchild, T2->lchild); // 递归判断左子树是否相等
bool rightEqual = isEqualTree(T1->rchild, T2->rchild); // 递归判断右子树是否相等
return leftEqual && rightEqual; // 左右子树均相等,返回true,否则返回false
}
int main() {
BiTree T1, T2;
cout << "请输入第一颗二叉树(前序遍历,0表示空节点):" << endl;
createBiTree(T1);
cout << "请输入第二颗二叉树(前序遍历,0表示空节点):" << endl;
createBiTree(T2);
if (isEqualTree(T1, T2)) {
cout << "两颗二叉树相等" << endl;
} else {
cout << "两颗二叉树不相等" << endl;
}
return 0;
}
```
你可以将该代码复制到C++编译器中进行测试。
阅读全文