java哈夫曼樹執行個體代碼_java

來源:互聯網
上載者:User

本文執行個體為大家分享了哈夫曼樹java代碼,供大家參考,具體內容如下

package boom; import java.util.ArrayDeque;import java.util.ArrayList;import java.util.Collections;import java.util.List;import java.util.Queue; class Node<T> implements Comparable<Node<T>>{  private T data;  private int weight;  private Node<T> left;  private Node<T> right;     public Node (T data,int weight){    this.data = data;    this.weight = weight;  }     public int compareTo(Node<T> other) {    if(this.weight > other.getWeight()){      return -1;    }if(this.weight < other.getWeight()){      return 1;    }    return 0;  }   public T getData() {    return data;  }   public void setData(T data) {    this.data = data;  }   public int getWeight() {    return weight;  }   public void setWeight(int weight) {    this.weight = weight;  }   public Node<T> getLeft() {    return left;  }   public void setLeft(Node<T> left) {    this.left = left;  }   public Node<T> getRight() {    return right;  }   public void setRight(Node<T> right) {    this.right = right;  }       public String toString(){     return "data:"+this.data+";weight:"+this.weight;   } } public class huffuman<T> {  static <T> Node<T> create(List<Node<T>> nodes){    while(nodes.size()>1){      Collections.sort(nodes);       Node<T> left = nodes.get(nodes.size()-1);      Node<T> right = nodes.get(nodes.size()-2);      Node<T> parent = new Node<T>(null,left.getWeight()+right.getWeight());      parent.setRight(right);      parent.setLeft(left);      nodes.remove(left);      nodes.remove(right);      nodes.add(parent);    }    return nodes.get(0);    }  static<T> List<Node<T>> breadth(Node<T> root){    List<Node<T>> list = new ArrayList<Node<T>>();    Queue<Node<T>> queue = new ArrayDeque<Node<T>>();    queue.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());      }    }    return list;  }  public static void main(String[] args) {     // TODO Auto-generated method stub     List<Node<String>> list = new ArrayList<Node<String>>();     list.add(new Node<String>("a",7));     list.add(new Node<String>("b",5));     list.add(new Node<String>("c",4));     list.add(new Node<String>("d",2));           Node<String> root =huffuman.create(list);     System.out.println(huffuman.breadth(root)); //   System.out.println(list);   }       }

以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支援雲棲社區。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.