生活随笔
收集整理的這篇文章主要介紹了
赫夫曼树+图解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
圖解
代碼實現
package com
.atguigu
.huffmanTree
;import javax
.swing
.*
;
import java
.awt
.geom
.RoundRectangle2D
;
import java
.util
.ArrayList
;
import java
.util
.Collections
;
import java
.util
.List
;
public class HuffmanTree {public static void main(String
[] args
) {int arr
[]={13,7,8,3,29,6,1};Node root
= createHuffmanTree(arr
);preOrder(root
);}public static void preOrder(Node root
){if(root
!=null
){root
.preOrder();}else {System
.out
.println("是空樹,不能遍歷~~");}}public static Node
createHuffmanTree(int[] arr
){List
<Node> nodes
= new ArrayList<>();for(int value
:arr
){nodes
.add(new Node(value
));}while (nodes
.size()>1){Collections
.sort(nodes
);System
.out
.println(nodes
);Node leftNode
=nodes
.get(0);Node rightNode
=nodes
.get(1);Node parent
= new Node(leftNode
.value
+ rightNode
.value
);parent
.left
=leftNode
;parent
.right
=rightNode
;nodes
.remove(leftNode
);nodes
.remove(rightNode
);nodes
.add(parent
);}return nodes
.get(0);}}
class Node implements Comparable<Node>{int value
;Node left
;Node right
;public void preOrder(){System
.out
.println(this);if(this.left
!=null
){this.left
.preOrder();}if(this.right
!=null
){this.right
.preOrder();}}public Node(int value
){this.value
=value
;}@Overridepublic String
toString() {return "Node{" +"value=" + value
+'}';}@Overridepublic int compareTo(Node o
) {return this.value
-o
.value
;}
}
總結
以上是生活随笔為你收集整理的赫夫曼树+图解的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。