树
数据结构学习记录DAY7 :树
-
树(tree)
树的概念是什么呢?树是一种“一对多”关系的数据元素的集合,其中有一些术语需要先进行定义
- 结点:树中的每个元素都称为一个“结点”(node)
- 根:有一个特定的结点被称为根结点或树根(root)。该结点没有更上一层的结点
- 叶子结点(子结点):除根结点之外的其余数据元素被分为 m(m > 0)个互不相交的集合 ,其中每一个集合本身也是一棵树,被称作原树的子树(subtree)。
- 父子关系:以下图为例,0001结点为0000结点和0002结点的父结点,0000结点和0002结点为0001的子节点。0000结点和0002结点互为兄弟结点。
- 度:一个结点拥有子树的数量称为该结点的度;
- 树的度:一棵树中,最大的结点的度称为树的度;
- 结点的层次:从根开始定义起,根为第1层,根的子结点为第2层,以此类推;
- 树的高度或深度:树中结点的最大层次;
- 结点的祖先:从根到该结点所经分支上的所有结点;
- 子孙:以某结点为根的子树中任一结点都称为该结点的子孙;
- 森林:由 棵互不相交的树的集合称为森林。
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ec5cRDvo-1657284848526)(E:%5CTypora’s%20photo%5Cimage-20220708192900313.png)]
-
树的重要特点:
- 空集合也是树,称为空树。空树中没有结点
- 特殊树:
- 无序树:树中任意节点的子结点之间没有顺序关系,这种树称为无序树,也称为自由树;
- 有序树:树中任意节点的子结点之间有顺序关系,这种树称为有序树;
- 二叉树:每个节点最多含有两个子树的树称为二叉树;
- 满二叉树:叶节点除外的所有节点均含有两个子树的树被称为满二叉树;
- 完全二叉树:除最后一层外,所有层都是满节点,且最后一层缺右边连续节点的二叉树称为完全二叉树;
- 哈夫曼树(最优二叉树):带权路径最短的二叉树称为哈夫曼树或最优二叉树。
性质:
- 树的结点数 = 结点总度数+1
- 度为m的树和m叉树的区别
- 度为m的树——至少有一个度为m个孩子
- m叉树——每个结点最多只能有m个孩子的
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sFP2edXU-1657284848529)(E:%5CTypora’s%20photo%5Cimage-20220708193803486.png)]
最常用的表示方法是使用广义表的方式。下图用广义表表示为:
(A , ( B ( E ( K , L ) , F ) , C ( G ) , D ( H ( M ) , I , J ) ) )
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y7TjLevL-1657284848530)(E:%5CTypora’s%20photo%5Cimage-20220708193854126.png)]
个人记录的话,写一些奇怪的东西也可以的罢。其实今天老师讲概念的时候我在想昨天做的烂的一比的八皇后问题,根本想不明白
二叉树
无序的二叉树由于其各个结点之间没有联系,故此不做研究,仅考虑有序二叉树
二叉树是n(n≥0)个结点的有限集合,每个结点至多有两个孩子结点因此:
- 空树可以是二叉树,即n = 0。
- 它的每一个子节点都是一颗二叉树
特点:
①每个结点至多只有两棵子树
②左右子树不能颠倒(二叉树是有序树)
二叉树具有以下几个性质:
- 二叉树中,第 i 层最多有 2 i-1 个结点。
- 如果二叉树的深度为 K,那么此二叉树最多有 2K-1 个结点。
- 二叉树中,终端结点数(叶子结点数)为 n0,度为 2 的结点数为 n2,则 n0=n2+1(总结点数为n1)
满二叉树
满二叉树如果二叉树中除了叶子结点,每个结点的度都为 2,则此二叉树称为满二叉树。
特点:
①只有最后一层有叶子结点
②不存在度为 1 的结点
③按层序从 1 开始编号,结点 i 的左孩子为 2i,右孩 子为 2i+1;结点 i 的父节点为 i/2 (如果 有的话)
满二叉树除了满足普通二叉树的性质,还具有以下性质:
-
满二叉树中第 i 层的节点数为 2n-1 个。
-
深度为 k 的满二叉树必有 2 k -1 个节点 ,叶子数为 2 k-1。
-
满二叉树中不存在度为 1 的节点,每一个分支点中都两棵深度相同的子树,且叶子节点都在 最底层。
-
具有 n 个节点的满二叉树的深度为 log2(n+1)。
完全二叉树
完全二叉树如果二叉树中除去最后一层节点为满二叉树,且最后一层的结点依次从左到右分布, 则此二叉树被称为完全二叉树。
二叉树的顺序存储 二叉树的顺序存储结构就是使用一维数组存储二叉树中的结点,并且结点的存储位置, 就是数组的下标索引。