相关术语
- 节点:包含一个数据元素及若干指向子树分支的信息
- 节点的度:一个结点拥有子树的数目称为结点的度
- 叶子节点:也称为终端结点,没有子树的节点或者度为零的节点
- 分支节点:也称为非终端结点,度不为零的节点称为非终端节点
- 树的度:树中所有节点的度的最大值
- 节点的层次(深度):从根节点开始,假设根节点为第1层,根节点的子节点为第2层,依此类推,如果某一个节点位于第L层,则其子节点位于第L+1层
- 树的高度:树中所有节点的层次最大值称为树的高度;高度是从下往上,深度是从上向下数
- 有序树:如果树中各棵子树的次序是有先后次序,则称该树为有序树
- 无序树:如果树中各棵子树的次序没有先后次序,则称该树为无序树
- 森林:由m(m≥0)棵互不相交的树构成一片森林。如果把一棵非空的树的根结点删除,则该树就变成了一片森林,森林中的树由原来根结点的各棵子树构成
1.二叉树
二叉树(binary tree)是指树中节点的度不大于2的有序树,它是一种最简单且最重要的树。
二叉树的递归定义为:二叉树是一棵空树,或者是一棵由一个根节点和两棵互不相交的,分别称作根的左子树和右子树组成的非空树;左子树和右子树又同样都是二叉树 。
2.满二叉树
一棵二叉树的结点要么是叶子结点,要么它有两个子结点(如果一个二叉树的层数为K,且结点总数是(2^k) -1,则它就是满二叉树。)
3.完全二叉树
若设二叉树的深度为k,除第 k 层外,其它各层 (1~k-1) 的结点数都达到最大个数,第k 层所有的结点都连续集中在最左边,这就是完全二叉树。
4.平衡二叉树
是一棵空树或它的任意节点的左右两个子树的高度差的绝对值不超过1
完全二叉树一定是平衡二叉树
5.二叉查找树
对于树中的每个节点X,他的左子树中所有关键字值小于X的关键字值,而他的左子树中所有关键字值大于X的关键字值。
平衡二叉搜索树:是二叉搜索树和平衡二叉树的结合。
6.最优二叉树
树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。
7.二叉堆
每个结点的值都大于其左孩子和右孩子结点的值,称之为大根堆;每个结点的值都小于其左孩子和右孩子结点的值,称之为小根堆。
堆不是平衡二叉搜索树,搜索树是中大于左小于右,堆是父节点值大于(小于)左右孩子节点值