Python 数据结构与算法 —— 哈弗曼树
1. 从扩充二叉树到哈弗曼树
扩充二叉树:对二叉树 TT,加入足够多的新叶节点(而不是任意),使 TT 的原有结点都变成度数为 2 的分支节点,得到的二叉树称为 TT 的扩充二叉树。
对于扩充二叉树而言,
- 扩充二叉树新增的结点称为其外部结点(external node);
- 原树 TT 的结点称为内部结点(internal node);
- 规定空树的扩充二叉树仍为空树;
2. 哈弗曼树的实现
树节点的定义:
class BinTNode:def __init__(self, data, left, right):self.data = dataself.left = leftself.right = right
哈弗曼树节点的定义:
class HTNode(BinTNode):def __lt__(self, other):return self.data < other.data
用小顶堆实现哈弗曼树,极为简洁:
from Queue import PriorityQueue def HuffmanTree(weights):trees = PriorityQueue()map(trees.put, weights)while trees.qsize() > 1:trees.put(trees.get() + trees.get())trees.get()
Python 数据结构与算法 —— 哈弗曼树相关推荐
- Python 数据结构与算法——tree(树)
(1)节点:Node.根节点:Root.叶子节点:LeafNode.内部节点:InternalNode: 我们可将该树表示为一个二维列表(lists of lists): >>> T ...
- python数据结构和算法 时间复杂度分析 乱序单词检测 线性数据结构 栈stack 字符匹配 表达式求值 queue队列 链表 递归 动态规划 排序和搜索 树 图
python数据结构和算法 参考 本文github 计算机科学是解决问题的研究.计算机科学使用抽象作为表示过程和数据的工具.抽象的数据类型允许程序员通过隐藏数据的细节来管理问题领域的复杂性.Pytho ...
- 【数据结构与算法基础】树的应用
写在前面 树这一数据结构学的差不多了,该拉出来练练了.本节学习几个树的应用,包括优先队列.Huffman编码等. 1.优先队列(Priority Queue) 优先队列是特殊的"队列&quo ...
- 数据结构(哈夫曼树+KMP)之 数据加密+解密
数据结构(哈夫曼树+KMP)之 数据加密+解密 原理:参考趣学数据结构 代码: #include<stdio.h> #include<stdlib.h> #define N 1 ...
- 【DSA】树-哈弗曼树详解(3)
什么是哈弗曼树 百度百科的定义 给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree).哈夫曼树是带权路径长 ...
- 『数据结构与算法』解读树(Tree)和二叉树(Binary Tree)!
『数据结构与算法』解读树(Tree)和二叉树(Binary Tree)! 文章目录 一. 树 1.1. 树的定义 1.2. 树的基本术语 1.3. 树的性质 二. 二叉树 2.1. 二叉树的定义 2. ...
- 数据结构“基于哈夫曼树的数据压缩算法”的实验报告
一个不知名大学生,江湖人称菜狗 original author: jacky Li Email : 3435673055@qq.com Last edited: 2022.11.20 目录 数据结构& ...
- 视频教程-Python数据结构与算法面试(上)-Python
Python数据结构与算法面试(上) 东北大学计算机专业硕士研究生,欧瑞科技创始人&CEO,曾任国内著名软件公司项目经理,畅销书作者,企业IT内训讲师,CSDN学院专家讲师,制作视频课程超过1 ...
- python 数据结构与算法——排序
文章目录 排序的分类 排序的复杂度 python 实现 冒泡排序 选择排序 插入排序 希尔排序 归并排序 堆排序 快排 树排序 线性时间排序算法 计数排序 桶排序 桶排序的复杂度分析 基数排序 排序的 ...
最新文章
- C#语法浮点型字面量
- java mongodb save,Java MongoDB一次保存多个文档
- 不悲不喜(职场版)【转】
- C++学习之路 | PTA(甲级)—— 1064 Complete Binary Search Tree (30分)(带注释)(精简)
- poj3252Round Numbers
- JQuery小插件,Selected插件1
- CSDN网站系统升级公告
- 利用Excel进行简单线性规划求解
- php插桩 xdebug,[原创]AFL编译插桩部分源码分析
- ClientKey实现登录QQ空间,并设置背景音乐
- 肥胖和食物成瘾中脑 - 肠道 - 微生物组的相互作用
- 抖音企业号开发功能技术搭建
- 香港 “一卡通”業務收費表
- Python实例3:中文词语统计
- 41-C++自动存储、静态存储和动态存储
- selenium模拟登陆教务系统
- 苹果6如何截屏_苹果商量里需要花6元,才能买到的游戏:论如何建立一个修仙门派,到底好不好玩...
- Pspice17.2绘制原理图
- 请教股票曲线图的问题
- 第三届全国高校计算机能力挑战赛Java程序设计赛总结