一、树的术语
序号 | 术语 | 概念 |
1 | 结点 | 包含一个数据元素及若干指向其子树的分支。在树的图形表示中为一个圆圈。 |
2 | 孩子(Child) | 结点的子树的根,称为该结点的孩子 |
3 | 兄弟(Sibling) | 同一个双亲的孩子之间互称为兄弟。 |
4 | 堂兄弟 | 其双亲在同一层的结点互为堂兄弟。 |
5 | 树的度 | 结点拥有的子树数量。 |
6 | 结点度(Degree) | 树内各结点的度的最大值。 |
7 | 节点层次 | 从根开始定义起,根为第一层,根的孩子为第二层。若某结点在第k层,则其子树的就在第k+1 层。 |
8 | 深度(高度)(Depth) | 树中结点的最大层次。 |
9 | 边 | 指结点连接孩子的边。 |
10 | 树的边数 | 是指结点连接孩子的边的总和(结点数-1) |
11 | 路径和路径长度 | 从结点n1到nk的路径为一个结点序列n1,n2,...,nk。ni是ni+1的父结点。路径所包含边的个数为路径的长度。 |
12 | 有序无序 | 有序树有序树树中任意节点的子结点之间有顺序关系,这种树称为有序树有序树无序树树中任意节点的子结点之间没有顺序关系,这种树称为无序树,也称为自由树 |
13 | 森林 | 是m (m>=0) 棵互不相交的树的集合。对树中每个结点而言,其子树的集合即为森林 |
14 | 叶子 | 度为0的结点。即没有子树的结点。 |
二、二叉树的性质
性质1: 二叉树第i层上的结点数目最多为2i-1(i≥1)。
性质2 :深度为k的二叉树至多有2k-1个结点(k≥1)。
性质3: 在任意-棵二叉树中,若终端结点的个数为n0,度为2的结点数为n2,no=n2+1。
满二叉树和完全二叉树是二叉树的两种特殊情形。
1、满二叉树(FullBinaryTree)
一棵深度为k且有2k-1个结点的二又树称为满二叉树。
满二叉树的特点:
(1)每一层上的结点数都达到最大值。即对给定的高度,它是具有最多结点数的二叉树。
(2)满二叉树中不存在度数为1的结点,每个分支结点均有两棵高度相同的子树,且树叶都在最下一层上。
2、完全二叉树(Complete BinaryTree)
若一棵二叉树至多只有最下面的两层上结点的度数可以小于2,并且最下一层上的结点都集中在该层最左边的若干位置上,则此二叉树称为完全二叉树。
特点:
(1) 满二叉树是完全二叉树,完全二叉树不一定是满二叉树。
(2) 在满二叉树的最下一层上,从最右边开始连续删去若干结点后得到的二叉树仍然是一棵完全二叉树。
(3) 在完全二叉树中,若某个结点没有左孩子,则它一定没有右孩子,即该结点必是叶结点。
性质4 :具有n个结点的完全二叉树的深度为
三、二叉树的操作
序号 | 操作 |
1 | 求二叉树中的节点个数 |
2 | 求二叉树中叶子节点的个数 |
3 | 求二叉树的深度 |
4 | 求二叉树第K层的节点个数 |
5 | 递归遍历前序中序后序 |
6 |
非递归遍历前序中序后序层序
1 前序遍历
2 中序遍历
3 后序遍历
4 层序遍历
|
7 | 将二叉查找树变为有序的双向链表 |
8 | 求二叉树的镜像 |
9 | 判断两棵二叉树是否结构相同 |
10 | 判断二叉树是不是平衡二叉树 |
11 | 判断二叉树是否是搜索二叉树 |
12 | 判断二叉树是不是完全二叉树 |
13 | 求二叉树中两个节点的最低公共祖先节点 |
14 | 求二叉树中节点的最大距离 |
15 | 由前序遍历序列和中序遍历序列重建二叉树 |