本文实例为大家分享了哈夫曼树 Java 代码, 供大家参考, 具体内容如下
แพ็คเกจบูม; นำเข้า java.util.arraydeque; นำเข้า java.util.arraylist; นำเข้า java.util.collections; นำเข้า java.util.list; นำเข้า java.util.queue; โหนดคลาส <t> ใช้การเปรียบเทียบ <node <t>> {ข้อมูลส่วนตัว t; น้ำหนัก int ส่วนตัว; โหนดส่วนตัว <T> ซ้าย; โหนดส่วนตัว <T> ขวา; โหนดสาธารณะ (ข้อมูล t, น้ำหนัก int) {this.data = ข้อมูล; this.weight = น้ำหนัก; } public int compereto (Node <t> อื่น ๆ ) {ถ้า (this.weight> other.getweight ()) {return -1; } if (this.weight <other.getweight ()) {return 1; } return 0; } สาธารณะ t getData () {ส่งคืนข้อมูล; } โมฆะสาธารณะ setData (ข้อมูล t) {this.data = ข้อมูล; } public int getweight () {น้ำหนักกลับ; } โมฆะสาธารณะ setweight (น้ำหนัก int) {this.weight = น้ำหนัก; } โหนดสาธารณะ <t> getLeft () {return left; } โมฆะสาธารณะ setleft (โหนด <t> ซ้าย) {this.left = ซ้าย; } โหนดสาธารณะ <t> getright () {return ขวา; } โมฆะสาธารณะ setright (โหนด <T> ขวา) {this.right = ขวา; } public String toString () {return "data:"+this.data+"; น้ำหนัก:"+this.weight; }} คลาสสาธารณะ Huffuman <T> {Static <T> Node <T> สร้าง (รายการ <node <t>> โหนด) {ในขณะที่ (nodes.size ()> 1) {collectss.sort (โหนด); โหนด <t> left = nodes.get (nodes.size ()-1); โหนด <t> ขวา = nodes.get (nodes.size ()-2); โหนด <t> parent = new node <t> (null, left.getweight ()+right.getweight ()); parent.setright (ขวา); parent.setleft (ซ้าย); โหนด remove (ซ้าย); โหนด remove (ขวา); NOODES.ADD (ผู้ปกครอง); } return nodes.get (0); } static <t> รายการ <node <t>> ความกว้าง (โหนด <t> รูท) {รายการ <node <t>> list = new ArrayList <node <T >> (); คิว <node <t>> queue = new ArrayDeque <Node <T >> (); queue.offer (รูท); ในขณะที่ (queue.size ()> 0) {node <t> out = queue.poll (); list.add (ออก); if (out.getLeft ()! = null) {queue.offer (out.getLeft ()); } if (out.getright ()! = null) {queue.offer (out.getright ()); }} รายการส่งคืน; } โมฆะคงที่สาธารณะหลัก (สตริง [] args) {// todo วิธีการที่สร้างขึ้นอัตโนมัติรายการสตับ <โหนด <สตริง >> list = new ArrayList <node <String>> (); list.add (โหนดใหม่ <String> ("A", 7)); list.add (โหนดใหม่ <String> ("B", 5)); list.add (โหนดใหม่ <String> ("C", 4)); list.add (โหนดใหม่ <String> ("D", 2)); โหนด <String> root = huffuman.create (รายการ); System.out.println (huffuman.breadth (root)); // system.out.println (รายการ); -以上就是本文的全部内容, 希望对大家的学习有所帮助, 也希望大家多多支持武林网。