##树的相关概念 父节点、子节点、兄弟节点 没有父节点的节点叫根节点,没有子节点的节点叫叶节点 节点的高度:节点到叶子节点的最长路径(边数)(从下往上,根节点高度为0) 节点的深度:根节点到这个节点所经历的边数(从上往下,根节点的深度为0) 节点的层数:节点的深度+1(类比楼房层数,地面是一楼) 树 ...
分类:
其他好文 时间:
2020-07-08 13:35:43
阅读次数:
57
##红黑树的来历 红黑树(Cormen, 2001)是一个平衡二叉树的高效实现。 是一种特殊的二叉查找树,自平衡二叉查找树,为了防止二叉查找树退化成链表的情况。 相对于AVL树(完美平衡二叉树),是一种平衡二叉树,它追求极致的平衡。 ##二叉查找树定义 根节点左边的值都小于根节点的值,右边的值都大于 ...
分类:
其他好文 时间:
2020-07-06 13:20:25
阅读次数:
74
1、简介 ? 在计算机科学中,AVL树是最早被发明的自平衡二叉查找树。在AVL树中,任一结点对应的两棵子树的最大高度差为1,因此它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下的时间复杂度都是O(log n)。增加和删除元素的操作则可能需要借由一次或多次树旋转,以实现树的重新平衡。AVL树得 ...
分类:
其他好文 时间:
2020-07-05 21:33:02
阅读次数:
63
一.二叉树 1.满二叉树 高度为h,由2的h次-1个节点构成的二叉树称为满二叉树 2.完全二叉树 高度为h,除第h层外,其它各层节点数都到达最大节点数。且第h层的节点都连续集中在最左边 二.二叉查找树 又称二叉排序树或二叉搜索树。左子树的所有节点值均小于根节点的值,右子树所有节点值均大于根节点的值。 ...
分类:
其他好文 时间:
2020-07-04 20:29:37
阅读次数:
48
#前置芝士 熟练掌握二叉排序树的操作,了解 \(Treap\) 的左旋和右旋。 #引言 \(Treap\) 巧妙地使用随机数,解决了二叉查找树保持平衡的问题。但随机数的不稳定,导致它在极小概率的情况下不能保持树的平衡。故我们需要一种更加稳定的数据结构(虽然它不是很好写)。 #正文 \(Splay\) ...
分类:
其他好文 时间:
2020-07-04 16:51:48
阅读次数:
58
108. 将有序数组转换为二叉搜索树 思路 二叉搜索树的概念: 二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均 ...
分类:
编程语言 时间:
2020-07-03 23:39:43
阅读次数:
71
写在前面:今天来学习一下MySQL中的索引机制。 一、何为索引? 说到索引,第一反应就是它能够加快数据查询的效率,可它到底是个什么东西呢? 数据库的索引是一种为了加速数据表中行记录检索的数据结构 索引的本质是 数据结构 我们来看一下索引的工作机制 可以看到,我对ID创建了一个索引,形成了数据结构,当 ...
分类:
数据库 时间:
2020-07-03 00:38:07
阅读次数:
78
一.查找 1.顺序查找:简单粗暴,将待查找数据和表中数据一一对比。 2.二分查找:也称折半查找,要求顺序表或者数组必须有序,查找效率相对较高。 3.分块查找:要求块与块之间有序,块内部不需要有序。查找效率高,但对表要求较高。 二.树的查找 1.二叉查找树:它或者是一棵空树,或者是具有下列性质的二叉树 ...
分类:
其他好文 时间:
2020-06-28 22:36:37
阅读次数:
64
二叉排序树(BST) 二叉排序树,又称二叉查找树(BST) 左子树结点值<根节点值<右子树结点值 如果用中序遍历来遍历一棵二叉排序树的话,可以得到一个递增的有序数列 左根右 二叉排序树的查找 //二叉排序树结点 typedef struct BSTNode{ int key; struct BSTN ...
分类:
编程语言 时间:
2020-06-28 13:17:50
阅读次数:
111
前言 在MySQL中,无论是Innodb还是MyIsam,都使用了B+树作索引结构(这里不考虑hash等其他索引)。本文将从最普通的二叉查找树开始,逐步说明各种树解决的问题以及面临的新问题,从而说明MySQL为什么选择B+树作为索引结构。 一、二叉查找树(BST):不平衡 二叉查找树(BST,Bin ...
分类:
数据库 时间:
2020-06-22 17:15:52
阅读次数:
83