关注
如大神说的,哈夫曼树实现,有不对的地方请大家指正 public class Main {
static class Node{
int v;
Node lChild;
Node rChild;
public Node(){}
public Node(int v){
this.v = v;
}
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
List<Node> list = new ArrayList<Node>();
for(int i=0;i<n;i++){
list.add(new Node(scanner.nextInt()));
}
Node root = createHuff(list);
System.out.println(getMin(root));
}
private static int getMin(Node node) {
if(node.lChild == null){
return 0;
}
if(node.lChild != null && node.rChild != null){
return node.v + getMin(node.lChild) + getMin(node.rChild);
}
return 0;
}
private static Node createHuff(List<Node> list) {
while(list.size()>1){
sortList(list);
Node parent = new Node(list.get(0).v + list.get(1).v);
Node lChild = list.remove(0);
Node rChild = list.remove(0);
parent.lChild = lChild;
parent.rChild = rChild;
list.add(parent);
}
return list.get(0);
}
private static void sortList(List<Node> list){
for(int i=0;i<list.size();i++){
int index = i;
int min = list.get(i).v;
for(int j=i+1;j<list.size();j++){
if(min > list.get(j).v) {
min = list.get(j).v;
index = j;
}
}
if(index != i){
Node tmp = list.get(i);
list.set(i, list.get(index));
list.set(index, tmp);
}
}
}
}
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 面试问题记录 #
19581次浏览 337人参与
# 硬件人你反向读研了吗 #
39856次浏览 608人参与
# 京东TGT #
27483次浏览 151人参与
# 硬件人秋招的第一个offer #
65638次浏览 1081人参与
# 滴滴工作体验 #
23325次浏览 123人参与
# 非技术岗投递进展 #
137547次浏览 1222人参与
# 材料进Fab厂真的劝退吗? #
36132次浏览 158人参与
# 不考虑转正,实习多久合适 #
24158次浏览 118人参与
# 机械求职避坑tips #
41106次浏览 355人参与
# 互联网回暖,腾讯要招5000+人! #
263525次浏览 4889人参与
# 面试经验谈 #
12638次浏览 190人参与
# 机械只有转码才有出路吗? #
125881次浏览 1590人参与
# 职场新人生存指南 #
332378次浏览 7134人参与
# 面试吐槽bot #
2533次浏览 31人参与
# 异地恋该为对方跳槽吗 #
23440次浏览 119人参与
# 硬件人更看重稳定还是高薪 #
38612次浏览 203人参与
# vivo求职进展汇总 #
208609次浏览 1341人参与
# 25届如何提前做秋招准备? #
163924次浏览 2451人参与
# 你遇到过哪些神仙同事 #
69421次浏览 623人参与
# 租房找室友 #
27589次浏览 144人参与
# 深信服求职进展汇总 #
188748次浏览 1694人参与