如大神说的,哈夫曼树实现,有不对的地方请大家指正 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); } } } }
点赞 评论

相关推荐

03-12 13:51
南昌大学 Java
点赞 评论 收藏
分享
迷茫的大四🐶:自信一点,我认为你可以拿到50k,低于50k完全配不上你的能力,兄弟,不要被他们骗了,你可以的
点赞 评论 收藏
分享
牛客网
牛客企业服务