ヘフマンツリーの構築
1498 ワード
ヘフマンツリー:重み付きパスが最小のツリー
public class HuffmanTree
{
publlic class Node implements Comparable
{
int weight;
Node left = null;
Node right = null;
public Node (int weight)
{
this.weight = weight;
}
// Comparable Node
@Override
public int compareTo(Node o)
{
return -(this.value - o.value);//
}
}
//
public Node CreateHuffmanTree(int[] data)
{
// ( )
ArrayList list = new ArrayList();
for(int i = 0; i < data.length; i++)
{
list.add(new Node(data[i]));
}
while(list.size() > 1)
{
// list
Collections.sort(list);
//
Node left = list.get(list.size() - 1);
Node right = list.get(list.size() - 2);
//
Node Parent = new Node(left.weight+right.weight);
Parent.left = left;
Parent.right = right;
//
list.remove(left);
list.remove(right);
//
list.add(Parent);
}
//
return list.get(0);
}
}