这段代码实现了判断两棵二叉树是否相等的函数 areTreesEqual()。并在 main() 函数中创建了两个二叉树,并调用该函数进行比较。
在 areTreesEqual() 函数中,首先判断两个根节点指针 root1 和 root2 是否都为空。如果是,则返回 true,表示两棵树相等。
接着,如果只有一个根节点为空,而另一个不为空,则返回 false,表示两棵树不相等。
最后,递归地比较当前节点数据是否相等,并继续递归比较左右子树是否相等。
在 main() 函数中,通过创建两个二叉树的方式演示了如何使用该函数来判断二叉树的相等性。
请确保已经定义了合适的数据结构和相关操作函数(如创建节点)以及输出流对象(如 cout)。
以下是可能对应的实现:
#include <iostream>
using namespace std;
struct TreeNode {
char data;
TreeNode* left;
TreeNode* right;
};
TreeNode* createNode(char data) {
TreeNode* newNode = new TreeNode();
if (newNode == nullptr) {
cout << "内存分配失败" << endl;
return nullptr;
}
newNode->data = data;
newNode->left = nullptr;
newNode->right = nullptr;
return newNode;
}
bool areTreesEqual(TreeNode* root1, TreeNode* root2) {
if (root1 == nullptr && root2 == nullptr)
return true;
if (root1 == nullptr || root2 == nullptr)
return false;
return (root1->data == root2->data) &&
areTreesEqual(root1->left, root2->left) &&
areTreesEqual(root1->right, root2->right);
}
int main() {
TreeNode* root1 = createNode('A');
root1->left = createNode('B');
root1->right = createNode('C');
TreeNode* root2 = createNode('A');
root2->left = createNode('B');
root2->right = createNode('D');
if (areTreesEqual(root1, root2))
cout << "两棵二叉树相等" << endl;
else
cout << "两棵二叉树不相等" << endl;
return 0;
}
运行以上代码,将会输出 “两棵二叉树不相等”,因为 root1 和 root2 的右子节点值不同。
内容由零声教学AI助手提供,问题来源于学员提问




