一.树
树:是N(N≥0)个结点的有限集合,N=0时,称为空树,这是一种特殊情况。在任意一棵非空树中应满足:
- 有且仅有一个特定的称为根的结点。
- 当N>1时,其余结点可分为m(m>0)个互不相交的有限集合T1,T2,…,Tm,其中每一个集合本身又是一棵树,并且称为根结点的子树。
- 树的根结点没有前驱结点,除根结点之外的所有结点有且仅有一个前驱结点。
- 树中所有结点可以有零个或者多个后继结点。
- 树中的某个结点(除了根结点之外)最多之和上一层的一个结点(其父结点)有直接关系,根结点没有直接上层结点,因此在n个结点的树中最多只有
n-1
条边。而树中每个结点与其下一层的零个或者多个结点(即其子女结点)有直接关系。 - 树中一个结点的子结点个数称为该结点的度,树中结点最大度数称为树的度。
- 结点的层次从树根开始定义,根节点为第一层(有些教材将根节点定义为第0层),它的子结点为第2层,以此类推。
结点的深度是从根节点开始自顶向下逐层累加的。
结点的高度是从叶节点开始自底向上逐层累加的。 - 树的高度是树中结点的最大层数。
- 有序树和无序树
树中结点的子树从左到右是有次序的,不能交换,这样的树称为有序树。有序树中,一个结点其子结点从左到右顺序出现是有关联的。反之称为无序树。
路径和路径长度:树中两个结点之间的路径是由这两个节点之间所经过的结点序列构成的,而路径长度是路径上所经过的边的个数。 -
森林
森林是m棵互不相交的树的集合。森林的概念和树的概念十分相近,因为只要把树的根节点删掉之后就变成了森林。反之,只要给n棵独立的树加上一个结点,并且把这n棵树作为该结点的子树,那么森林就变成了树。 -
树的基本性质
树中结点数等于所有节点的度数+1.
度为m的树中第i层上之多有mi−1个结点(i≥1)
高度为h的m叉树至多有mh−1m−1个结点。
具有n个结点的m叉树的最小高度为logm(n(m−1)+1)。 -
二、二叉树
1: 在二叉树的第 i ii 层上至多有2 i − 1 2i-12i−1个结点 ,第i层上至少有 1个结点?
2: 深度为k的二叉树至多有2k-1个结点,深度为k时至少有 k 个结点?
3: 对于任何一棵二叉树,若2度的结点数有n2个,则叶子数n0必定为n2+1 (即n0=n2+1) -
满二叉树:一颗深度为k 且有2k方-1个节点的二叉树。
-
完全二叉树:深度为k的,有 n个结点的二叉树,当且仅当其每一个结点都与深度为k的满二叉树中编号从1至n的结点一一对应
-
三.树的遍历(二叉树)
遍历定义指按某条搜索路线遍访每个结点且不重复(又称周游)。
遍历用途
它是树结构插入、删除、修改、查找和排序运算的前提,是二叉树一切运算的基础和核心。
先(前)序遍历: 对访问到的每个结点,先访问根结点,然后是左结点,然后是右结点。
中序遍历: 对访问到的每个结点,先访问左结点,然后是根结点,然后是右结点。
后序遍历: 对访问到的每个结点,先访问左结点,然后是右结点,然后是根结点。