树是数据结构中很重要的一环。工作中,也常常用到。

树,是一种数据的表示结构,主要用于算法中的查找、排序。常常与指针联系在一起。

树有许多种,读书的时候,印象中就是一大堆树,搞不清。现在梳理一下:


0、二叉树

1)非空二叉树只有一个根节点(空的话,一个节点也没有了,哪还是树吗?)

2)每个节点至多两个子树,成为左、右子树


满二叉树与完全二叉树是两种特殊的二叉树:


1、满二叉树

除了叶子结点,每个非叶子结点都有两个结点。


2、完全二叉树

除最后一层,每一层的结点都达到最大值,且最后一层只缺少右边的若干结点。完全二叉树就是最后一层的右叶子结点可能会残缺的二叉树。


二叉树的遍历,按根结点遍历的顺序分为前序、中序、后序。


3、二叉链表

二叉树通常采用链式存储结构。二叉树每个结点的存储结构以由2部分组成:数据域与指针域。指针域有两个,分别指向左右子结点。因此二叉树的链式存储结构也成为二叉链表。


4、穿线二叉树

二叉链表中,每个结点有两个指针域。对于叶子结点来说,没有子节点,指针根本没用。于是就可以用来存储遍历树的顺序,如同在二叉链表中增加了一条线索,故名穿线二叉树。


5、最优二叉树

最优二叉树是构造出来的。利用霍夫曼算法构造出来的二叉树叫最优二叉树。最优二叉树可以用来优化算法。比如霍夫曼编码。


6、二叉排序树

二叉排序树用于查找。

首先将无序表构造成二叉排序树,然后利用这个树,就能很快的进行查找鸟。

所谓的二叉排序树是这样的:

1)左子树上的所有结点都小于根节点

2)右子树上的所有结点都不小于根节点

3)左右子树也满足上述两个要求


7、B- 树

一种动态调节的平衡多路查找树,作用也是在于有利查找。

B-树不一定是二叉树,是多路树。什么意思?就是一个结点有好多数据域组成,然后每个数据域左右两边都有一个指针域,一个结点有n个数据域的话,就会有n+1个指针域。

B-树的定义很繁复,突出的2点就是:

1)数据域左边的子树中,所有数据域都小于它;右边的子树中,所有数据域都不小于它。

2)B-树是有序的,从左到右,左小右大,数据散落在所有结点上,包括叶子、非叶子。

B-树是分阶的。所谓的阶,就是每个结点可以放多少个数据域。比如,3阶B-树,就是每个结点最多有3个数据域。有数据加入或者删减,那就要有所调整,甚至也许因为某结点放不下了,还要进行裂变。


8、B+ 树

B+树是B-树的变种。不同的是,数据散落在B-树的所有结点上,而B+树则是,位于非叶结点上的数据,在叶子结点上也会有一份。比如说,数据52,在B-树位于根节点,那么它在叶子结点上就没有;但在B+树,它在某个叶子结点上也会存在。就是说,B+树的叶子结点,有全部的数据。

到这里,说SQL SERVER建了聚集索引的表,存储结构是B+树就很好理解了。聚集索引字段,位于非叶子结点,而叶子结点,则包含全部字段。。。


宝贝、宝贝,我是你的大叔


原文地址:https://www.cnblogs.com/leftfist/p/4257865.html