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

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

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


    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+树就很好理解了。聚集索引字段,位于非叶子结点,而叶子结点,则包含全部字段。。。


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


  • 相关阅读:
    一个小案例精通lamda表达式
    你想被开除吗?来看看程序员【离职小技巧】吧
    让 Flutter 在鸿蒙系统上跑起来
    “TensorFlow 开发者出道计划”全攻略,玩转社区看这里!
    环形单链表的增删改查、约瑟夫环两种解法
    一万字详解 Redis Cluster Gossip 协议
    Lambda表达式
    Linux系统中如何进入退出vim编辑器,方法及区别
    成为博客主的第一天
    【秋招内推】近期互联网公司秋招内推合集
  • 原文地址:https://www.cnblogs.com/leftfist/p/4257865.html
Copyright © 2020-2023  润新知