自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 STL红黑树

红黑树红黑树根据红连接的位置可以分为偏左红黑树和偏右红黑树。这两种树分别对应了2-3树和2-3-4树,本篇文章只对偏左红黑树偏左红黑树概念偏左红黑树是基于2-3树的思想的一种实现:红黑树是二叉树其中引入了红黑链接的概念,红链接对应2-3树中的3-结点,黑链接对应2-3树中的2-结点(普通节点)性质1.红链接均为左连接2.没有任何一个结点同时与两条红链接相连(1条红链接连接的两个结点构成1个3-结点,两条就是4-结点)3.红黑树是黑色平衡,任意空连接到根结点的路径上的黑链接数目相等4.根结点

2020-06-28 16:48:43 376

原创 平衡树:2-3查找树

平衡树查找树相较于链表数组来说,查找效率很高,我们知道影响查找树效率的最大因素就是查找树的深度,最坏的情况就是所有的结点都在根结点的一侧就像下面这种情况平衡树思想就是为了优化树的查找,让根结点两侧结点数目“平衡”,来达到降低查找树高度的目的2-3查找树2-3查找树是一种平衡树的思想我们将标准二叉查找树的结点称为2-结点(含有一个键和两条链),而现在我们引入3-结点,它含有两个键和三条链。每一条链就是一个分区2-3查找树定义一棵2-3查找树要么为空,要么满足满足下面两个要求:2-结点:含有一

2020-06-26 11:36:29 253 1

原创 STL优先队列实现

逻辑我们知道普通队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。在某些情况下,我们可能需要找出队列中的最大值或者最小值,例如使用一个队列保存计算机的任务,一般情况下计算机的任务都是有优先级的,我们需要在这些计算机的任务中找出优先级最高的任务先执行,执行完毕后就需要把这个任务从队列中移除。普通的队列要完成这样的功能,需要每次遍历队列中的所有元素,比较并找出最大值,效率不是很高,这个时候,我们就可以使用一种特殊的队列来完成这种需求,优先队列。实现优先队列的底层是用堆实现的,因为堆顶就

2020-06-25 16:26:01 1301

原创 STL堆实现

逻辑堆是一种用数组模拟完全二叉树的结构完全二叉树:只有最后一层是不满的,其他层都是满的,而且最后一层左满又不满如果一个结点的位置为k,则它的父节点的位置为k/2,左子节点位置2k,右子结点2k+1堆规定父节点大于子节点,对子节点之间的大小不做要求代码实现#ifndef Heap#define Heapusing namespace std;template <class RandomAccessIterator, class T>//下沉操作void _adjust_hea

2020-06-20 14:26:33 203

原创 C++折纸问题

问题描述给定输入参数N,代表纸条从下边向上方对折N次,请从上到下打印所有折痕方向分析1.将一张纸分为粉,黑两面,粉色为正面,黑色为反面。2.第一次对折时粉色朝上,对折之后产生一个向下的折痕,这时我们把对折之后的纸粉色朝下,让折痕朝上把这个折痕看成是二叉树的根结点。3.第二次对折新产生的两个折痕就是根结点的子节点,4.之后每一次对折都产生一层结点5.我们规定左节点为下折痕,右节点为上折痕6.从上到下打印这很方向就是这棵树的中序遍历代码class paperNode{public:

2020-06-13 11:25:21 1999

原创 C++二叉查找树的深度

算法采用递归的方法1.如果左子树不为空,递归计算左子树的深度left2.如果右子树不为空,递归计算右子树的深度right3.比较left和right,树的深度为较大者+1(加上根结点)代码//计算整个树的深度 int maxDepth(){ return maxDepth(root); } //计算指定子树的深度 int maxDepth(Node<Value>* x){ int depth = 0;

2020-06-12 14:19:01 475

原创 C++二叉查找树遍历

前情回顾队列模板实现二叉查找树实现基础方法按照根结点的遍历顺序划分1.前序遍历:根->左->右2.中序遍历:左->根->又3.后序遍历:左->右->根前序遍历:E,B,A,D,C,G,F,H中序遍历:A,B,C,D,E,F,G,H后序遍历:A,C,D,B,F,H,G,E代码 //获取整个树中所有的键 void preErgodic(){ preErgodic(root); } //获取指定树x的所有键,

2020-06-12 14:01:31 180

原创 C++队列模板实现

逻辑队列一种先进先出的数据结构只能在一端进行插入,在另一端进行删除代码template <typename T>class Queue{private: class Node { public: T item; Node* next; Node(){} Node(T item, Node* next) { this->item = item;

2020-06-10 17:45:44 729 1

原创 C++二叉查找树

原理左节点比根节点小,右结点比根结点大API设计结点类:Node<Value>public Node* leftpublic Node* rightpublic int keypublic Value value二叉查找树:BinaryTree<Value>private Node* root //根节点private int N //元素个数public void put(Key key,Value value) //向树插入键值对private No

2020-06-08 11:02:20 131

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除