引入头结点可以让所有节点的操作变得一致,否则头结点需要特殊处理.

 

 

 

 

 

广义表:

n个表元素组成的有限序列,是线性表的推广.

除了表头元素,剩余的才是标尾.

 

 

 

 树与二叉树

结点的度:该结点包含孩子的个数.

树的度:所有结点最高的度.

内部结点:除了根结点和叶子结点之外的.

 

 

完全二叉树:最后一层之上的结点都是满的,最后一层的结点是从左到右连续排列的.

 

 

前序,中序,后序的区别在于,访问根结点的顺序.

前序:根结点,左子树,右子树

中序:左子树,根结点,右子树

后序:左子树,右子树,根结点

前序:12457836

中序:42785136

后序:48752631

 

反向构造二叉树

前序+中序,或者中序+后序,都可以把二叉树给还原掉.

 

树转二叉树:

连线法:

把兄弟结点连起来; 对于有多个孩子的,只保留第一个孩子的连线;最后再把这个树展开.

 

查找二叉树(排序二叉树)

左孩子<根; 右孩子>根.

最优二叉树(哈夫曼树)

主要用于哈夫曼编码(是一种编码方式,能够让压缩的编码信息变得更短一些;无损压缩).

树的路径长度:把树中所有一段一段的路径给加起来得到的数值.

权:是叶结点中的数值.

带权路径长度:根结点到该叶结点的距离*该叶结点的权

树的带权路径长度:(树的代价):把所有的带权路径长度累计起来.

哈夫曼树要达到的效果是:让树的带权路径长度最短

 

选出权最小的两个叶结点,然后合成一个小树,然后删除这两个叶结点,重复这个过程得到哈夫曼树.

从下图中可以看出来只使用叶子结点的权,是因为其他结点是构造出来的,一开始并不存在.

 

线索二叉树

把空的左右指针给利用起来,方便遍历

 

平衡二叉树

同样的一个序列,它的排序二叉树有可能有多棵.

越平衡,查询效率越高.

调整:将比较靠中间的位置放在根结点附近.

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐