一、普通树结构
特点:
- 每个节点都只有有限个子节点或无子节点。
- 没有父节点的节点称为根节点。
- 每一个非根节点有且
只有一个父节点
。 - 除了根节点外,每个子节点可以分为多个不相交的子树。
- 树里面没有
环路
。
名词:
节点的度
:一个节点含有的子树的个数称为该节点的度。树的度
:一棵树中,最大的节点度称为树的度。叶节点或终端节点
:度为零的节点。(一般叫叶节点
居多)- 非终端节点或
分支节点
:度不为零的节点。 - 父亲节点或
父节点
:若一个节点含有子节点,则这个节点称为其子节点的父节点。 - 孩子节点或
子节点
:一个节点含有的子树的根节点称为该节点的子节点。 兄弟节点
:具有相同父节点的节点互称为兄弟节点。节点的层次
:从根开始定义起,根为第1层,根的子节点为第2层,以此类推。深度
:对于任意节点n,n的深度为从根到n的唯一路径长,根的深度为0。高度
:对于任意节点n,n的高度为从n到一片树叶的最长路径长,所有树叶的高度为0。堂兄弟节点
:父节点在同一层的节点互为堂兄弟。节点的祖先
:从根到该节点所经分支上的所有节点。子孙
:以某节点为根的子树中任一节点都称为该节点的子孙。森林
:由m(m ≥ \geq ≥ 0)颗互不相交的树的集合称为森林。
树的种类:
无序树
:树中任意节点的子节点之间没有顺序关系,这种树称为无序树,也成为自由树。有序树
:树中任意节点的子节点之间有顺序关系,这种树称为有序树。二叉树
:每个节点最多含有两个子树的树称为二叉树。完全二叉树
:对于一颗二叉树,假设其深度为d(d>1),除了d层外,其他各层各层的节点数目均已达到最大值,且第d层所有节点从左到右连续地紧密排列,这样的二叉树叫完全二叉树。满二叉树
:所有叶节点都在最底层的完全二叉树。平衡二叉树
(AVL树
):当且仅当任意节点的两棵子树的高度差不大于1的二叉树。排序二叉树
(二叉查找树):
①若任意节点的左子树不为空,则左子树上所有节点的值都小于它的根节点的值。
②若任意节点的右子树不为空,则右子树上所有节点的值都大于它的根节点的值。
③任意节点的左右子树也分别为二叉查找树。霍夫曼树
:带权路径最短的二叉树称为哈夫曼树或最优二叉树。B树
:一种对读写操作优化的自平衡的二叉查找树,能够保持数据有序,拥有多余2个子树。红黑树
: 一种自平衡二叉查找树。
二、二叉树
定义
- 二叉树(英语:Binary tree)是每个节点
最多只有两个分支
(即不存在分支度大于2的节点)的树结构。通常分支被称作“左子树”或“右子树”。二叉树的分支
具有左右次序,不能随意颠倒
。
性质
- 二叉树的第i层至多拥有 2 i − 1 2^i-1 2i−1个节点;深度为k的二叉树至多总共有 2 k + 1 − 1 2^{k+1}-1 2k+1−