STL关联容器
来源:互联网 发布:xp添加网络打印机 url 编辑:程序博客网 时间:2024/06/03 00:04
5.1 树的导览
5.1.1 二叉搜索树
二叉树是指任何节点最多只有两个子节点;而二叉搜索树(也称二叉查找树)的规则如下:
- 对数时间的元素插入和访问;
- 任何节点的
键值
一定大于其左子树
中的每一个节点的键值,一定小于其右子树
节点的键值。
根据上面的定义,判断下图中的树哪个不是二叉搜索树:
左边的是,右边的不是;因为根节点的键值6小于左子树中其中一个节点的键值7。请记住:从根节点一直往左(右)走,直到无左(右)路可走,即得最小(大)元素。如下图所示:
5.1.2 操作
二叉搜索树的常用操作有:查找最小/大元素,插入及删除元素。下面给出具体的操作步骤。注意:这里以int型数据作为研究对象,当然可以写成模板,这里一切从简,以聚焦于算法的原理。
节点结构体
struct Node{ int element // 以int型数据为例 Node *pLeft, *pRight; // 指向左右子节点的指针};
查找最小节点
要在一颗二叉搜索树中查找最大值或最小值,一直往右或往左走即可。这里只给出查找最小节点的程序,查找最大节点类似,下面代码中的pLeft换成pRight即可;注意边界条件的判断也相当重要,尤其在面试时,不可忘记!!!
// 递归实现Node* findMin(Node* bsTree){ // 边界条件判断 if(bsTree == NULL) return NULL; else if(bsTree->pLeft == NULL) return bsTree; else findMin(bsTree->pLeft);}// 非递归实现Node* findMin(Node* bsTree){ if(bsTree == NULL) return NULL; while(bsTree->pLeft != NULL) { bsTree = bsTree->pLeft; } return bsTree;}
这里找到了最小的节点(Node* node),那么结构体中的数据轻而易得(node->element)!
0 0
- STL关联容器
- STL::map关联容器
- STL关联容器概述
- STL 关联容器
- STL关联容器--Set
- STL中关联容器
- STL 之关联容器
- Effective STL --关联容器
- STL关联容器
- STL之关联容器
- STL — 关联容器
- STL-关联式容器
- stl关联容器
- STL关联容器概述
- STL关联容器
- 【STL】关联式容器
- STL容器之关联容器
- STL容器--关联容器map
- <<UNIX环境高级编程>>之第四章理解
- 位运算
- SPOJ 694/705 后缀数组
- 安卓按键精灵手机助手(功能:安卓版抓抓、命令库、制作电脑UI界面)
- HDU3183- 贪心
- STL关联容器
- Kubernetes Scheduler源码分析
- 【读书笔记】《LATEX入门》第二章【未完】
- python的多线程运用Threading
- 面向对象总结
- AWS配置红杏的两种方法
- URAL 1297 后缀数组+线段树
- UVA 674 - Coin Change 完全背包求状态数
- (转)Webstorm常用快捷键