文章目录
树
由节点组成,一个节点有N个子节点。
多叉树
一个节点有多个子节点。
二叉树
一个树,所有节点最多有两个子节点,称为二叉树。
有一些基本的功能。三序遍历。
完全二叉树
除了最后一层,都满满当当。
满二叉树
满满当当。
顺序存储二叉树
完全二叉树,可以由数组来表示。
对于索引为k的节点,其左子索引为2k+1,右子为2k+2。
超过长度即为没有子节点。
线索化二叉树
完全二叉树。可以稍快速地遍历。
由遍历顺序,可以分为三种。
所有叶子节点的左子节点指向遍历的前一个元素。
右子节点指向遍历的后一个元素。
堆
完全二叉树。可以用来排序。
有大顶堆和小顶堆两种。
大顶堆:任意节点的值都比其左右子大。左右没有大小关系。
小顶堆:比左右子小。
堆排序:一种比较稳定的排序。
赫夫曼树
完全二叉树。可以节省空间。
学名为,带权路径长最短的树。
003和004,可以节省为0,0,3,4四个节点。
应用:数据压缩。
二叉查找树
又称:二叉搜索树,二叉排序树。
顾名思义,查找效率高。为什么呢?
左子内部的所有节点,值都比该节点小。
右子内部,比该节点都大。
类似于二分法,可以迅速地缩小搜索范围。
平衡二叉树
树如果只有一个子节点,那就和链表差不多了。右侧的图。
平衡二叉树,对节点的子做了一些要求。
高为h的BT, 其结点的数目在2(h+1)-1和1/2(3(h+1)−1)之间, 叶的数目在2h和3h之间。
平衡二叉搜索树
就是平衡的二叉搜索树。
红黑树
平衡二叉树。节点有颜色,非红即黑。
有很多要求。特点是修改效率高。
B树
平衡的多叉树,适用于查找。
二叉对海量数据还是有点吃力。所以数据库多用B树。
B+树
B树,叶子节点有前后的指针,以提高遍历效率。