树是一种非线性结构,是由n(n>=0)个结点组成的有限集合。
- 节点的度:一个节点含有的子树的个数称为该节点的度
- 树的度:一颗树中,最大的节点的度称为树的度
- 树的深度:根节点层次为1,其他节点的层次是其父节点层次加1。一颗树中所有节点层次的最大值称为这棵树的深度。也就是树的层数
- 树的遍历:先序遍历:根左右;中序遍历:左根右;后序遍历:左右根
二叉树是一种特殊的树,限制每个节点最多有两个子树,‘左子树’和‘右子树’。
- 在非空二叉树中,第i层的节点总数不超过,i>=1
- 深度为h的二叉树最多有个结点,最少有h个结点(h>=1)
- 对于任意一棵二叉树,如果其叶子节点数为,而读书为2的节点总数为,则。
- 具有n个节点的完全二叉树的深度为
满二叉树:一个深度为k,且有个结点的二叉树,被称为满二叉树
完全二叉树: 一棵二叉树中,除了最后一层外,其余层都是满的,并且最后一层或者是满的,或者是在右边缺少连续若干节点,则称此二叉树为完全二叉树
二叉查找树(Binary Search Tree),也称为二叉搜索树,是指一个空树或者具有下列性质的二叉树:
- 若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值
- 若任意节点的右子树不空,则右子树上所有节点的值均大于它的根节点的值
- 任意节点的左右子树也分别为二叉查找树
- 没有键值相等的点
由二叉搜索树的定义可知,中序遍历二叉搜索树可得到一个关键的有序递增序列
平衡二叉树,平衡二叉搜索树,又被称为AVL树:它是一棵空树或者它的左右两颗子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。
B树(Balance Tree)也称为B-树,它是一棵多路平衡查找树,自平衡,它的每一个节点最多包含k个孩子,k被称为B树的阶。一个m阶的B树具有如下特征:
- 根节点至少有两个子女
- 每个中间节点都包含k-1个元素和k个孩子,其中m/2 <= k <= m
- 每个叶子节点都包含k-1个元素,其中 m/2 <= k <= m
- 所有的叶子结点都位于同一层
- 每个节点中的元素从小到大排列,节点当中k-1个元素正好是k个孩子包含的元素的值域划分
B树主要应用于文件系统以及部分数据库索引
B+树是B树的一种变体,有这比B树更高的查询性能。一个m阶的B+树具有如下几个特征:
- 有k个子树的中间结点包含k个元素,每个元素不保存数据,只用来索引,所有数据保存在叶子节点
- 所有的叶子结点中包含了全部元素的信息,及指向含这些元素记录的指针,且叶子结点本身依关键字的大小自小而大循序连接
- 所有的中间结点元素都同时存在于子节点,在子节点元素中是最大(或最小)元素