从二叉搜索树(Binary Search Tree)入手,学习C++中类的构建 --(一)BST与基本框架
2015-03-13 11:14
871 查看
一、二叉搜索树
二叉搜索树(以下简称BST)是树形数据结构的常见应用之一,其特点是:1 - 插入单个元素操作 (Insert) 的时间复杂度为 O(lgn)
2 - 构建二叉搜索树的时间复杂度为: O(nlgn) [最优情况] ,O(n^2) [最差情况].
最优情况 —— 平衡二叉树
最差情况 —— 构建所用序列是严格有序的,则构建出的搜索树高度为n,所有节点只有左叶子或右叶子
3 - 中序遍历获得排序后队列的时间复杂度为 O(n)
4 - 核心原理与快排相同,区别在于比较顺序不同 (Make same comparision, but in a different order.)
二、伪代码实现插入(Insert)
def Insert(value): if HEAD==NULL: HEAD = Create(value) return if value < HEAD.value: if HEAD.left == NULL HEAD.left = Create(value) return Insert(HEAD.left) else if HEAD.right == NULL HEAD.right = Create(value) return Insert(HEAD.right)
三、Class BST 的基本框架——需要的成员
我们希望实现的Class应该是这样的:1 -- vector<type> number 是存放希望构建成BST的一组数据,创建类的时候如下调用——
BST tree(number);
然后此时类中就应该已经具有一颗构建好的二叉树,我们可以通过公开的头结点head访问。
2 -- 二叉搜索树的中序遍历应该同样包含在类中。而且我们希望在调用构造函数时,就能够产生一个有序的vector<type> sortedTree,可以获得排列后的序列.
3 -- 搜索、删除、插入功能
4 -- 更多样化的构造函数
有了以上的种种构思,初步可以创建下面这样一个基本的class BST:
struct Node { int val; Node* left; Node* right; Node(int x): val(x),left(NULL),right(NULL) {}; };
class BST { public: Node* head; vector<Node*> sortedTree; void inorderBST( ); void deleteNode(); void insertNoed(); void searchNode(); BST(const vector<int>&); ~BST(); };
我们还可以添加更多的进阶功能,比如说给inorderBST()函数添加一个重载,可以传入一个自定函数指针,实现对于节点的自定义操作。(类似于C的qsort函数)
void BST::inorderBST(Node* head,funct fun,void* argument)
或者为BST提供多种遍历方式,添加前序遍历、后序遍历。等等……
总之任何功能都可以被添加进自定义的搜索树中,我们将在后面的部分中逐渐实现。
相关文章推荐
- 从二叉搜索树(Binary Search Tree)入手,学习C++中类的构建 --(二)class与struct, 构造函数,重载函数
- 从二叉搜索树(Binary Search Tree)入手,学习C++中类的构建 --(三)public\private\protected、封装\继承\多态、提供更丰富的函数接口
- 从二叉搜索树(Binary Search Tree)入手,学习C++中类的构建 --(四)未完成。占坑。C++下的强制类型转换带来的问题
- BST树(Binary Search Tree)二叉搜索树
- 【算法导论学习-24】二叉树专题2:二叉搜索树(Binary Search Tree,BST)
- OpenGL学习笔记:(二)简单绘制正方形(基本框架)
- 二叉搜索树(Binary Search Tree)
- 学习数据结构 二叉查找树(binary search tree)
- Spring学习一:基本框架图介绍与HelloWorld程序
- dwz框架学习之精简官方页面 学习最基本的dwz控件和语法
- [Data Structure] 二叉搜索树(Binary Search Tree) - 笔记
- NS2学习路程---1NS仿真创建网络基本框架
- 二叉搜索树(Binary Search Tree)
- SSM框架系列学习总结5之Mybatis实现基本CRUD和代理开发模式
- BST (Binary Search Tree)
- 二叉搜索树;二叉查找树;二叉排序树;binary search tree(BST)
- java学习 第三章 框架的基本概念
- spring4学习记录05-spring mvc实战之框架构建测试jpa借助spring-data实现自动化jpa
- Fiori2.0学习笔记-核心技术框架&基本项目结构
- BST(binary search tree)类型题目需要用到的头文件binary_tree.h