0

文字に 0 と 1 を割り当てる方法を見つけるのに苦労しています。すべてのノードを最初に最高の優先度を持つツリーにするように、優先度キューを修正しました。各文字に値を割り当てる方法についてのアイデアがありません。inorder traversal を使用することを考えていましたが、ビットを文字に追加するときにそのコードがどのように見えるかについて行き詰まっています。すべてのヘルプは大歓迎です! 私のノードクラスは以下の通りです:

private class Node{
    Node right;
    Node left;
    Node parent;
    char letter;
    int value;
    String binaryValue = "";
    private Node(char c, int in, Node parent, Node left, Node right){
        letter = c;
        value = in;
        this.left = left;
        this.right = right;
        this.parent = parent;
    }
    @SuppressWarnings("unused")
    private void setRight(Node right){
        this.right = right;
    }
    @SuppressWarnings("unused")
    private void setLeft(Node left){
        this.left = left;
    }
    private void setParent(Node parent){
        this.parent = parent;
    }
    private Node getParent(){
        return parent;
    }
    @SuppressWarnings("unused")
    private void setWeight(int weight){
        this.value += weight;
    }
    private void setBinary(String binary){
        binaryValue = binary;
    }
    private String getBinary(){
        return binaryValue;
    }
}
4

2 に答える 2

0

あなたが何を求めているのか正確にはわかりませんが、これはあなたの問題に対する1つの解決策かもしれません

char letter = c;
  byte[] bytes = letter.getBytes();
  StringBuilder binary = new StringBuilder();
  for (byte b : bytes)
  {
     int val = b;
     for (int i = 0; i < 8; i++)
     {
        binary.append((val & 128) == 0 ? 0 : 1);
        val <<= 1;
     }
     binary.append(' ');
  }
  System.out.println(binary);
于 2012-11-26T01:20:43.497 に答える
0

先頭から文字に至るまでの枝の数がビット数です。左の枝に 0 を、右の枝に 1 を割り当てるだけです。上から下へのトラバースは、その文字のバイナリ コードです。

于 2012-11-26T02:33:22.663 に答える