一、树的基本定义
1、树基本概念
- 树:一种用来模拟拥有树状结构的数据结构模型,形似一颗倒置的树,是一种特殊的稀疏图
- 树的结点:每一个用于保存数据的元素,如图1.1中的A、B、C等
- 度:
- 节点的度:节点拥有的子元素的个数,例如图1.1中的B节点,度为3。
- 树的度:节点度最大的节点的度,如图1.1树的度为3
- 根节点:位于最顶端的节点,如图1.1中的A
- 叶子节点:度为0的节点,也成为末端节点,如图1.1中的K、J、L、O、P均为叶子节点
- 孩子节点:一个节点的子元素节点(节点子树的根节点),如图1.1中的B,孩子节点为D、E、F
- 双亲结点(父节点):一个节点具有子元素节点,那么对于其所有子元素节点来说该节点为双亲结点(父节点),如图1.1中的D、E、F,他们的双亲节点为B
- 兄弟节点:具有相同双亲节点的节点称之为兄弟节点,如图1.1中的D、E、F,他们互为兄弟节点
- 祖先:由根节点到该节点之间的所有父节点,如图1.1,I节点的祖先节点为A、B、D
- 子孙:该节点子树的全部节点,如图1.1中B节点的子孙为D、E、F、I、J、K
2、深度与高度
- 深度指任意节点到根节点的唯一路径的距离,根节点深度为0。如图1.1,D节点深度为2。
- 高度指任意节点到叶子节点最长路径的距离,叶子节点高度为0。如图1.1 D节点的高度为
- 对于树来说,树的高度为根节点的高度,深度为叶子节点的深度的最大值,因此高度等于深度。如图1.1,深度与高度均为5
- 高度与深度的计算可使用递归,详见二叉树的高度与深度计算。
3、树的表示方法
-
双亲表示法:在树结构中,除根节点外所有节点均只有一个双亲节点,因此可以使用其双亲节点来表示该树。
-
存储方式
数组下标 data parent 0 A -1 1 B 0 2 C 0 3 D 1 4 E 1 5 F 1 6 G 2 7 H 2 8 I 3 9 J 4 10 K 8 11 L 6 12 M 6 13 N 7 14 O 12 15 P 13 -
代码实现(Java)
import java.util.Vector; //树的节点 class TreeNode<T> { private T data; private int parent; public TreeNode(T data, int parent) { this.data = data; this.parent = parent; } } //树类 public class Tree<T> { private int countNodes; private Vector<TreeNode<T>> nodes; public Tree(int countNodes,Vector<TreeNode<T>> nodes){ this.countNodes=countNodes; this.nodes=nodes; } }
-
-
孩子表示法:将树中的每个节点与其子节点用链表形式连接起来,并将所有链表置入线性表中。
-
存储方式
-
代码实现(Java)
-
-
孩子双亲表示法:同时采用孩子表示法和双亲表示法
-
存储方式
-
代码实现(Java)
-
-
孩子兄弟表示法
二、二叉树
1、二叉树的基本概念
- 二叉树
- 子树
- 斜树
- 满二叉树
2、二叉树的实现
3、二叉树的遍历
- 前序遍历
- 中序遍历
- 后序遍历
- 层序遍历
4、反转二叉树
三、树的遍历
1、深度优先搜索DFS
2、广度优先搜索BFS
四、特殊的树
1、红黑树
2、字典树
3、二叉排序树(二叉搜索树)
4、哈夫曼树
5、线索二叉树
6、平衡二叉树
7、堆
8、B树
9、B+树
本篇内容为原创内容,采用CC BY-NC-SA 4.0协议许可
2021-03-25 15:23
UtopiaXC
于大连
Comments | NOTHING