树的基础知识
由 n(n>=1)
个有限节点组成
特点
- 每个节点有零个或多个子节点
- 没有父节点的节点为根节点
- 非根节点有且只有一个父节点
- 除根节点外,每个子节点可以分为多个不相交的子树
名词定义
-
树
-
由根节点和若干子树构成
-
递归定义
设 T1 ,T2,…,TK 是树,它们的根节点分别为 n1,n2,…,nk 用一个新节点 n 代替 n1,n2,…,nk 的父亲 . 得到一棵新树
节点 n 就是新树的根 , n1,n2,…,nk , 一组兄弟节点,它们都是节点 n 的子节点
我们还称 T1 ,T2,…,TK 为节点 n 的子树
-
-
空树
空集
-
节点的度
一个节点含有的子节点个数
-
叶节点或终端节点
度 == 0
-
非终端或分支节点
度 != 0
-
兄弟节点
还有相同父节点的节点
-
树的度
树中最大的节点的度为树的度
-
节点的层次
- 从根开始–根为第一层
- 根的子节点为第二层
- …
- 从根开始–根为第一层
-
树的高度或深度
树中节点最大层次 == 所有节点的最大层次
定义根节点层 ==1 ,子节点层 +1 -
堂兄弟节点
父节点在同一层
-
节点的祖先
从根开始到该节点所经过的分支的所有节点
-
子孙
以某节点为根的子树的任意节点都是该节点的子孙
-
森林
由
m(m>=0)
棵互不相交的树的集合
种类
无序树 - 自由树
无序树
- 树中任意节点的子节点没有顺序关系
有序树
- 节点的字节点有顺序关系
二叉树
- 每个节点最多有两个子树
满二叉树 - 完全二叉树
- 深度为
k
,且有 2k - 1 个节点 - 叶节点除外的所有节点均含有两个子树的树
- 除了最后一层其他都含有两个子节点
完全二叉树
-
除最后一层外,所有层都是满节点
-
最后一层缺右边连续节点
遍历判断
完全二叉树
- 树 == NULL ERROR
- 树 != NULL 遍历
- 节点 != NULL pop该节点 将左右孩子列入队列
- 左孩子 == NULL 右孩子 != NULL 一定不是
- 遇到节点
之后队列中的所有节点都为叶子节点
- 左孩子 != NULL 右孩子 == NULL
- 左右节点 == NULL
哈夫曼树 - 最优二叉树
- 带权路径最短的二叉树
表示方法
图像表示法
完全二叉树
符号表示法
(A(B(D(#,#),G(#,#)),C(E(#),F)))
遍历表示法
-
先序遍历 -
根-左-右
- ABD##G##CE#F
-
中序遍历 -
左-根-右
-仅二叉树可以
- #D#B#G#A#ECF
-
后序遍历 -
左-右-根
- ##D##GB#EFCA
-
层次遍历
- ABCDGEF#####