第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

手撕哈夫曼算法

標簽:
算法

Huffman 树,又称最优树,是一类带权路径长度最短的树,有着广泛的应用。
用处就是在编码的时候,可以缩小空间,提高利用率,本篇就是尝试自己完成Huffman编码。算法的实现步骤很简单:
(1)创建二叉树列表A,左右子树均为空
(2)选择列表A中权值最小的两个,组成新的二叉树,该树的权值为最小的两个之和
(3)在A中删除这两个树,将新的树加入列表A
(4)重复(2)和(3),直到F只含一棵树为止
在这里插入图片描述
实现代码如下:
该函数传递的List是已经从小到大排序好的了

package cn.caeser.demo.huffman;

import java.util.List;

public class HuffmanConversion {
	public static List<Tree> target;
	
	public static void convert(List<Tree> treeList){
		target=treeList;
		while(target.size()>=2) {
			Tree former=target.get(0);
			Tree later=target.get(1);
			Tree treeItem=new Tree();
			treeItem.setLeftTree(former);
			treeItem.setRightTree(later);
			treeItem.setPriorityValue(former.getPriorityValue()+later.getPriorityValue());
			target.remove(0);
			target.remove(0);
			int i=0;
			for (i=0; i < target.size(); i++) {
				if(treeItem.getPriorityValue()<target.get(i).getPriorityValue()) {
					target.add(i, treeItem);
					i=-1;
					break;
				}
			}
			if(i==target.size()) {
				//如果循环结束时都没有执行add操作
				//表示当前treeItem的priorityValue是最大的
				target.add(treeItem);
			}
			if(target.size()==0) {
				//树列表为空时表示已经生成最后一个树
				target.add(treeItem);
				break;
			}
		}
	}
}

面试的时候总会有各种算法题,如何快速的实现算法,是自己需要仔细考虑的,死记硬背不是很好的选择,加上自己的理解,说不定给自己的面试情况加上好几分。

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優(yōu)惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消