本文实例为大家分享了哈夫曼树 Java 代码 , 供大家参考 , 具体内容如下
booming paket; impor java.util.arraydeque; impor java.util.arraylist; impor java.util.collections; impor java.util.list; import java.util.queue; Node kelas <T> mengimplementasikan <Node <T>> {data T Private T; berat int pribadi; node pribadi <T> kiri; node pribadi <T> benar; node publik (data t, int bobot) {this.data = data; this.weight = berat; } public int compareTo (node <T> lainnya) {if (this.weight> Other.getWeight ()) {return -1; } if (this.weight <Other.getWeight ()) {return 1; } return 0; } public t getData () {data pengembalian; } public void setData (data T) {this.data = data; } public int getWeight () {return weight; } public void setWeight (int weight) {this.weight = weight; } node publik <T> getLeft () {return left; } public void setleft (node <T> kiri) {this.left = kiri; } node publik <T> getRight () {return right; } public void setRight (node <T> kanan) {this.right = kanan; } public string toString () {return "data:"+this.data+"; bobot:"+this.weight; }} kelas publik huffuman <t> {static <t> node <t> buat (daftar <node <t>> node) {while (node.size ()> 1) {collections.sort (node); Node <T> kiri = node.get (node.size ()-1); Node <T> kanan = node.get (node.size ()-2); Node <T> Parent = node baru <T> (null, left.getweight ()+right.getweight ()); Parent.setright (kanan); Parent.setleft (kiri); node.remove (kiri); node.remove (kanan); nodes.add (induk); } return node.get (0); } statis <T> Daftar <Node <T>> Lebar (Node <T> root) {Daftar <Node <T>> Daftar = Daftar Array baru <Node <T>> (); Antrian <node <t>> antrian = arraydeque baru <node <t>> (); antrian.offer (root); while (queue.size ()> 0) {node <t> out = queue.poll (); list.add (out); if (out.getleft ()! = null) {queue.offer (out.getleft ()); } if (out.getRight ()! = null) {queue.offer (out.getRight ()); }} daftar pengembalian; } public static void main (string [] args) {// TODO METODE AUTO-ENCOMEERATED Daftar Stub <node <String>> Daftar = ArrayList baru <Node <String>> (); list.add (node baru <string> ("a", 7)); list.add (node baru <string> ("b", 5)); list.add (node baru <string> ("c", 4)); list.add (node baru <string> ("d", 2)); Node <string> root = huffuman.create (daftar); System.out.println (huffuman.breadth (root)); // System.out.println (daftar); }}以上就是本文的全部内容 , 希望对大家的学习有所帮助 , 也希望大家多多支持武林网。