ZBLOG

.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) && a...

这段代码实现了判断两棵二叉树是否相等的函数 areTreesEqual()。并在 main() 函数中创建了两个二叉树,并调用该函数进行比较。

areTreesEqual() 函数中,首先判断两个根节点指针 root1root2 是否都为空。如果是,则返回 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;
}

运行以上代码,将会输出 “两棵二叉树不相等”,因为 root1root2 的右子节点值不同。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=15195

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?