• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

c++检查两个二进制搜索树是否相同

c# 搞代码 4年前 (2022-01-09) 13次浏览 已收录 0个评论

给定两个二叉搜索树的根节点。如果两个二进制搜索树是相同的,则打印1,否则打印0.如果两个树在结构上相同且节点具有相同的值,则它们是相同的。

在上面的图像中,tree1和tree2都是相同的。

为了确定两棵树是否相同,我们需要同时遍历两棵树,并且在遍历时我们需要比较树木的数据和子节点。

以下是逐步算法,以检查两个BST是否相同:

1.如果两棵树都是空的,则返回1。

2.否则,如果两棵树都是非空的

-检查根节点的数据(tree1-> data == tree2-> data)

-递归检查左子树,即调用sameTree(tree1-> left_subtree,tree2-> left_subtree)

-递归检查右子树,即调用sameTree(tree1-> right_subtree,tree2-> right_subtree)

-如果上述三个步骤中返回的值为true,则返回1。

3.否则返回0(一个是空的而另一个不是)。

以下是上述方法的实现:

// c++程序检查两个bst是否相同  #include <iostream> using namespace std;   // BST节点struct Node {     int data;     struct Node* left;     struct Node* right; };   // 创建新节点的实用程序函数 struct Node* newNode(int data) {     struct Node* node = (struct Node*)         malloc(sizeof(struct Node));     node->data = data;     node->left = NULL;     node->right = NULL;       return node; }   //函数执行顺序遍历void inorder(Node* root) {     if (root == NULL)         return;       inorder(root->left);       cout << root->data << " ";       inorder(root->right); }   // 函数检查两个bst是否相同int isIdentical(Node* root1, Node* root2) {     // 检查这两棵树是否都是空的     if (root1 == NULL && root2 == NU<p>本文来源gao!%daima.com搞$代*!码9网(</p>LL)         return 1;     // 如果树中的任意一个为非空,另一个为空,则返回false    else if (root1 != NULL && root2 == NULL)         return 0;     else if (root1 == NULL && root2 != NULL)         return 0;     else {     // 检查两个树的当前数据是否相等,并递归地检查左子树和右子树        if (root1->data == root2->data && isIdentical(root1->left, root2->left)             && isIdentical(root1->right, root2->right))             return 1;         else            return 0;     } }   // 驱动代码int main() {     struct Node* root1 = newNode(5);     struct Node* root2 = newNode(5);     root1->left = newNode(3);     root1->right = newNode(8);     root1->left->left = newNode(2);     root1->left->right = newNode(4);       root2->left = newNode(3);     root2->right = newNode(8);     root2->left->left = newNode(2);     root2->left->right = newNode(4);       if (isIdentical(root1, root2))         cout << "Both BSTs are identical";     else        cout << "BSTs are not identical";       return 0; }

输出:

Both BSTs are identical

本篇文章就是关于检查两个二进制搜索树是否相同的方法介绍,希望对需要的朋友有所帮助!

以上就是c++检查两个二进制搜索树是否相同的详细内容,更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:c++检查两个二进制搜索树是否相同

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址