1. Tree
树是一种长得像遗传系谱图(实际上一些关系和术语也很类似遗传谱图的)的抽象数据类型(ADT)。其由有限个节点按照其内在关系链接起来,且满足以下特点:
- 每个节点(Node)有另个或多个子节点(Child);
- 有且仅有根节点(Root)没有父节点(Parent);
- 每一个非根节点有且仅有一个父节点;
- 【递归Recursion】从每个节点出发都可以独立地看为新树(子树: subtree)
一些术语
1. 度相关 – Degree
- Degree of a Node
节点的度:某一节点的子节点数量(e.g. 独生子女 degree = 1) - Degree of a Tree
树的度:某一棵树中最大的节点的度(最能生的) - Leaf Node
叶节点:度为零的节点
2. 层次相关 – Level
- Level of a Node
节点的层次:根为第1层,根的子节点为第2层,以此类推
层次遍历(Level-Order Traversal) - Depth of a Tree
树的深度:树中节点的最大层次 - Height of a Tree
树的高度:树中节点的最大层次
3. 一些节点的关系
- Cousin Node
堂兄弟节点:父节点在同一层的节点互为堂兄弟 - Ancestor Node
祖先节点:从根到该节点所经分支上的所有节点 - Descendant
子孙节点:以该节点为根的树中,所有节点都是其子孙节点
4. 树的种类
- Unordered Tree
无序树:树中任意节点的子节点没有顺序关系,也称自由树 - Ordered Tree
有序树:树中任意节点的子节点之间有顺序关系- Binary Tree
二叉树:每个节点最多含有两个子树- Full Binary Tree
满二叉树:深度为 d d d 且有 2 d − 1 2^d-1 2d−1 个节点的二叉树 - Complete Binary Tree
完全二叉树:一棵深度为 d d d 的有 n n n 个结点的二叉树,对树中的结点按从上至下、从左到右的顺序进行编号,如果编号为 i ( 1 ≤ i ≤ n ) i(1≤i≤n) i(1≤i≤n) 的结点与满二叉树中编号为 i i i 的结点在二叉树中的位置相同,则这棵二叉树称为完全二叉树。 - Balanced Binary Tree
平衡二叉树( AVL树):当且仅当任何节点的两棵子树的高度差不大于1的二叉树 - Binary Search Tree
二叉搜索树:
(1) 若左子树不空,则左子树上所有结点的值均小于它的根结点的值;
(2) 若右子树不空,则右子树上所有结点的值均大于它的根结点的值;
(3) 左、右子树也分别为二叉排序树;
(4) 没有键值相等的结点。
- Full Binary Tree
- Huffman Tree
霍夫曼树:带权路径最短的二叉树称为哈夫曼树或最优二叉树。 - B 树
一种对读写操作进行优化的自平衡的二叉查找树,能够保持数据有序,拥有多余两个子树。
- Binary Tree