2012-03-16 24 views
0

希望の結果を説明するのは難しいですが、私がここで具体的に行っていたのは、あなたが典型的なツリーの出力を左に90度回転させた場合のものです。あなたは非常によくハフマン木に似ていないこと、見ることができるようにコンソールにハフマンツリーを表示するにはどうしたらいいですか?

(e) 
(s) 
(o) 
    (w) 
    (l) 
     (n) 
     (t) 
    (h) 
     (k) 
     () 
     (a) 

printTree(tree, "\t", 0); 

private static void printTree(HTree tree, String space, int height) { 
    assert tree != null; 
    if (tree instanceof HLeaf) { 
    HLeaf leaf = (HLeaf)tree; 

    for (int k = 0; k < height; k++) 
     System.out.print(space); 
     System.out.println("(" + leaf.value + ")");  
    } 

    else if (tree instanceof HNode) { 
    HNode node = (HNode)tree; 
    // traverse left 
    printTree(node.left, space, height++); 


    // traverse right 

    printTree(node.right, space, height++); 
    }  
} 

出力は次のようになります。

答えて

3

thisの例をご覧ください。ハフマンツリーは次のようにして印刷されます。

Display of Huffman coding tree 



    +---f: 0.3960, 0 (step 6) 
    | 
    [email protected]: 1.0000, 
    | 
    |  
    |   
    |    
    |   +---a: 0.0495, 1000 (step 2) 
    |   | 
    |  [email protected]: 0.1089, 100 (step 3) 
    |  | | 
    |  | |  
    |  | | +---#: 0.0099, 10010 (step 1) 
    |  | | | 
    |  | [email protected]: 0.0594, 1001 (step 2) 
    |  |  | 
    |  |  +---b: 0.0495, 10011 (step 1) 
    |  |   
    |  |  
    |  | 
    | [email protected]: 0.2574, 10 (step 5) 
    | | | 
    | | +---c: 0.1485, 101 (step 3) 
    | |  
    | | 
    [email protected]: 0.6040, 1 (step 6) 
     | 
     |  
     | +---d: 0.1683, 110 (step 4) 
     | | 
     [email protected]: 0.3465, 11 (step 5) 
      | 
      +---e: 0.1782, 111 (step 4) 
関連する問題