第五章学习小结
Posted s1111
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第五章学习小结相关的知识,希望对你有一定的参考价值。
第五章 树和二叉树
一:树
定义:n个结点的有限集,可为空或非空
若树非空一定有且仅有一个根结点
树的度:结点度的最大值(结点的子树数为结点的度)
深度:最大层次数
森林:m课不相交树的集合
课本上关于树只说明了定义和一些术语,重点内容在于二叉树部分
二:二叉树
二叉树的性质:深度为k的二叉树最多有2^k-1个结点,若其终端结点数为n0,度为2的结点为n2,n0=n2+1(若没有度为1的结点,结点总数为n0+n2=2n2+1)
满二叉树:深度为k,结点数2^k-1
完全二叉树:每个结点都与深度为k的满二叉树一一对应,但可以不是满二叉树,最后一层可能不满
存储
1.顺序
用数组存储,将每个结点与完全二叉树的结点对照存储,不存在的结点存0
缺点在于如果度为1的结点过多,会有很多没必要存的0,存储空间会大大浪费
但优点在于很快就能找到根结点,知道编号很快就能找到该编号结点的双亲和孩子
2.链式
由数据域和指针域组成,指针域一般包括该结点的左右孩子,也可加上他的双亲
遍历
分为先序,中序,后序,层次,前三种思路相同,以先序为例,先输出当前结点,然后递归调用遍历函数,把左右孩子结点传入函数即可
层次遍历:从上到下,从左到右遍历,可以借助队列来实现,输出根结点后根结点出队,然后他的左右孩子依次入队,继续操作
线索二叉树:在指针域增加一个LTAG,一个RTAG,为0时代表child域指的是他们的孩子,tag为1代表lchild是该结点的前驱,rchild是该结点的后继
(只是了解,并没有实际应用过。。。)
哈夫曼树
又称最优树,给定权值,构造出的带权路径长度最小的二叉树
构造算法
结构体数组,先将所有结点child域和parent的值赋为0,前n个结点传入n个叶子结点的权值,从n+1开始,挑选两个权值最小的结点相加,为这个结点处的权值,再相应的改变child域和parent域的值
作业方面
注意new数组的时候不要用 =new bool [n]{false}的形式,可以改成 =new bool [n]();
以上是关于第五章学习小结的主要内容,如果未能解决你的问题,请参考以下文章