树和二叉树
树描述
树是一种比较特别的数据结构,它与常见的链表,队列,栈等线性结构不同,它是非线性数据结构。最为常见的就是二叉树,其次还有B,B+树等变种,基本都是采用父亲孩子节点的方式,以下简单举个例子。
图1 高度为4的二叉树
对于如上所示的树,它的每一个节点最多有两个孩子,故它被称为二叉树。
- 父亲和孩子
具体说来87,45,78分别有两个孩子;32只有一个孩子;09,17,65,53称为叶子节点,它的孩子为空。45叫做87的左孩子,78叫做右孩子。
- 结点的度
结点的孩子的个数叫做结点的度。例如87的度为2,32的度为1。树中结点的最大度数叫做树的度。
- 叶子结点
度为0的结点为叶子结点。如图中的17,65,53,09。
- 结点的高度
从树的叶子结点开始自底向上叠加的。如图中的32结点的高度为2。
- 结点的深度
从树的根结点开始自顶向下。如图中32结点的深度为3。
- 树的高度(深度)
树中所有结点的最大高度。
- 特殊性质:令度为0的结点个数为n0,度为1的结点个数为n1,度为2的结点个数为n2,则n0=n2+1。
证明:由于无环连接图的性质,结点的0个数等于边数加1,度为i的结点对应的边的个数为i。故所有的结点个数n = n0 + n1 + n2 = n1*1+ n2*2 + 1 解得n0=n2+1
二叉树的存储表示
顺序存储结构
如上所示的二叉树,可以按照顺序放入到一个连续的数组中。
索引 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
值 |
XX |
87 |
45 |
78 |
32 |
17 |
65 |
53 |
09 |
一定注意&#x