哈夫曼树和线索二叉树
来源:互联网 发布:mac怎么才能玩lol国服 编辑:程序博客网 时间:2024/06/05 19:13
线索二叉树的思想来源于二叉树的存储结构中,存在一些空的指针域,因此是否能够将这些空间利用起来,存储一些关于节点间先后顺序的信息,由此产生了线索二叉树。线索二叉树中,线索反映前驱、后继的关系,而指针则体现左右子树。
以二叉链表为例,线索二叉树存储结构上的特点是添加标识符,表明左右指针域究竟存的是指向前驱和后继的线索,还是指向左右子树的指针;
线索二叉树的优势是一旦对一棵二叉树建立了相应的线索结构,当以后使用特定的方式遍历这课树时,可以避免递归方式和非递归方式(利用栈)带来的空间开销。
构建和遍历线索二叉树的思路如下:
首先构造一棵二叉树(构造二叉树可以使用任意顺序:先序、中序、后续均可);
按照一定的顺序线索化这棵二叉树
然后按照相同的顺序遍历该二叉树,就可以利用上一步构建的线索信息。
①当ltag为0时,指向该结点的左孩子,为1时指向该结点的前驱
②rlag为0时,指向该结点的右孩子,为1时指向该结点的后驱
**哈夫曼树:
在有n个节点的哈夫曼树中,其节点总数为2n-1**
构造哈夫曼树:
①根据给定的n 个权值,w1,w2.。。。构成n棵二叉树的森林F={T1,T2,….},其中每颗二叉树Ti中都只有一个权值为Wi 的根节点,其左右子树均空;
②在森林F中选出两棵根节点权值最小的树作为一棵新树的左右子树,且置新的根节点的权值为其左右子树上根节点的权值之和
③从F 中删除构成新树的两棵树,同时把新树加入到F 中
④重复第②③步,直到F中只含有一棵树为止,此树便是哈夫曼树
阅读全文
0 0
- 哈夫曼树和线索二叉树
- 二叉树的遍历和线索线索二叉树
- 遍历二叉树和线索二叉树
- 遍历二叉树和线索二叉树
- 线索二叉树的线索化和析构
- 线索二叉树的生成和遍历
- 线索二叉树的表示和实现
- 线索二叉树的建立和遍历
- 数据结构--树和二叉树--二叉树的线索化
- 树和二叉树(三)-线索二叉树
- 树和二叉树(四)-线索化二叉树
- 中序线索化二叉树和遍历线索二叉树
- 线索二叉树和中序非递归遍历线索化后的二叉树
- 线索二叉树 --->树
- 线索二叉树算法
- C#线索二叉树
- 线索二叉树
- C#线索二叉树
- Web大规模高并发请求和抢购的解决方案
- 装饰器模式
- C99标准柔性数组详解
- Shared Source CLI Essentials翻译(一):1.1 CLI虚拟执行环境
- 使用jquery操作iframe中的元素
- 哈夫曼树和线索二叉树
- 大话设计模式笔记(一)——设计模式概论和简单工厂模式
- linux终端如何隐藏和恢复光标
- 归并排序Java实现
- Codeforces Round #427 A. Key races
- Perl中指定函数参数类型
- JAVA中的线程池-ThreadPoolExecutor
- 耍流氓不一定违法,不做等保测评一定违法,不信你看……
- Excel导入导出工具类(java)