如何用C++递归来查找BST中的根节点的inorder successor
来源:互联网 发布:卡罗拉双擎销量数据 编辑:程序博客网 时间:2024/06/07 01:14
小编觉得大家看到这个题目应该有点懵圈,我猜想大概是不知道什么是inorder successor吧!那现在小编就为大家排忧解难。这个inorder successor是这么翻译的中序的后继节点。什么意思呢?小编觉得吧,举个例子给大家看看,就应该能明白了。
比如,一棵二叉搜索树的中序遍历的结果是:6,10,11,12,13,13,15,15,17,22,34,72. 而假设根节点是12的话,那么这个根节点的后续节点就是13.这就是为什么叫做inorder successor了,其实就是利用了中序遍历的方法来查找有关inorder successor的。这里补充一点,当心大家有点忘记中序遍历的口诀了,口诀是“左根右”。
小编为大家解决了什么是inorder successor了,那现在咋们就直接进入代码环节:
下面是table.h文件
//This is the table.h file#include<iostream>#include<cstring>#include<cctype>using namespace std;struct node{ int data; node * left; node * right;};class table{ public: //关于如何建立二叉搜索树,小编就不在这里展示代码了 //直接展示有关解决这个问题的函数头 //Find the root's inorder successor and return the item's data to main int find_root_inorder_successor(); private: //Find the root's inorder successor and return the item's data to main int find_root_inorder_successor(node * root); node * root;};
下面是table.cpp的代码展示,也就是如何实现这两个函数
//This is the table.cpp#include "table.h"int table::find_root_inorder_successor(){ //这里解释一下 //因为根据中序遍历的口诀,那么根节点的后续节点就处在根节点的右子树 //所以就可以直接传root->right给recursive function return find_root_inorder_successor(root->right);}int table::find_root_inorder_successor(node * root){ if(!root) return 0; if(!root->left) return root->data; //既然wrapper function已经将参数传到右子树了,那么为了找到根节点的后续节点,那么在递归调用的时候就只遍历左边就行了 return find_root_inorder_successor(root->left);}
下面就是展示在主函数里,如何调用这两个函数了
//This is the main.cpp file#include "table.h"int main(){ //Find the root's inorder successor and return the item's data to main table object; int result = object.find_root_inorder_successor(); cout<<"The result is: "<<result<<endl; return 0;}
下面就是结果的展示了:
有可能大家有些看不懂这个结果,没事,小编会为大家解释的。
结果中的Level 1就是根节点,根据BST的规则,就可以知道这棵树是什么样子的了。然后输出的结果就是13了。
以后小编还会继续用C++来实现有关数据结构中的问题,敬请期待吧!
阅读全文
1 0
- 如何用C++递归来查找BST中的根节点的inorder successor
- 如何用C++递归来删除所有的BST节点
- [leetcode 285] Inorder Successor in BST---查找二叉搜索树中某个节点在中序遍历中的后续节点
- 如何用C++递归在BST(Binary Search Tree) 数有几个节点大于根节点的数字
- Inorder Successor in BST
- Inorder Successor in BST
- Inorder Successor in BST
- Inorder Successor in BST
- Inorder Successor in BST
- Inorder Successor in Binary Search Tree BST中找中序遍历的后继节点
- Tree_Graph Inorder Successor in Binary Search Tree BST中找中序遍历的后继节点 @CareerCup
- [刷题]Inorder Successor in BST
- **LeetCode-Inorder Successor in BST
- [LeetCode285]Inorder Successor in BST
- [leetcode]Inorder Successor in BST
- leetcode Inorder Successor in BST
- [LeetCode]Inorder Successor in BST
- 285. Inorder Successor in BST
- javascript 方法调用模式有4种
- iOS手把手教你生成推送证书
- C语言版----代数式计算器
- JavaScript学习---2
- 第一篇博客
- 如何用C++递归来查找BST中的根节点的inorder successor
- MyBatis参数传入集合之foreach动态sql
- ORACLE中BLOB字段查询的方法
- 安装MySQL图解全过程
- Android 通过应用包名获取MD5和SHA1值
- 关于ListView添加onItemClick无反映的问题
- centos7安装telnet服务
- Unity+FairyGUI)自定义fgui界面基类
- Homogeneous Coordinates(齐次坐标)