2 Star 0 Fork 0

CS-IMIS-23/20172328lxy

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
.idea
bin
src
Web实验
practice3
week_1
week_10
homework
HuffmanTest.java
HuffmanTree.java
Node.java
text.txt
实验3_查找和排序
week_2
week_3
week_4
week_5
week_6/practice
week_7
week_8
week_9
实验三_4
实验三_5
实验五
实验五_3
第一周
第七周
第三周
第九周
第二周
第五周
第八周
第六周
第十周
第四周
MyUtil.java
LICENSE
README.md
run.sh
statistics.sh
克隆/下载
HuffmanTree.java 2.24 KB
一键复制 编辑 原始数据 按行查看 历史
package week_10.homework;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Queue;
public class HuffmanTree {
public static Node createTree(List<Node> nodes) {
// 只要nodes数组中有2个以上的节点
while (nodes.size() > 1) {
//进行从大到小的排序
Collections.sort(nodes);
//获取权值最小的两个节点
Node left = nodes.get(nodes.size() - 1);
Node right = nodes.get(nodes.size() - 2);
//生成新节点,新节点的权值为两个子节点的权值之和
Node parent = new Node('无', left.getWeight() + right.getWeight());
//让新节点作为两个权值最小节点的父节点
parent.setLeft(left);
left.setCodenumber("0");
parent.setRight(right);
right.setCodenumber("1");
//删除权值最小的两个节点
nodes.remove(left);
nodes.remove(right);
//将新节点加入到集合中
nodes.add(parent);
}
return nodes.get(0);
}
public static List<Node> breadthFirstTraversal(Node root) {
List<Node> list = new ArrayList<Node>();
Queue<Node> queue = new ArrayDeque<Node>();
//将根元素加入“队列
if (root != null) {
queue.offer(root);
root.getLeft().setCodenumber(root.getCodenumber() + "0");
root.getRight().setCodenumber(root.getCodenumber() + "1");
}
while (!queue.isEmpty()) {
//将该队列的“队尾”元素加入到list中
list.add(queue.peek());
Node node = queue.poll();
//如果左子节点不为null,将它加入到队列
if (node.getLeft() != null) {
queue.offer(node.getLeft());
node.getLeft().setCodenumber(node.getCodenumber() + "0");
}
//如果右子节点不为null,将它加入到队列
if (node.getRight() != null) {
queue.offer(node.getRight());
node.getRight().setCodenumber(node.getCodenumber() + "1");
}
}
return list;
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Java
1
https://gitee.com/CS-IMIS-23/20172328lxy.git
git@gitee.com:CS-IMIS-23/20172328lxy.git
CS-IMIS-23
20172328lxy
20172328lxy
master

搜索帮助