0

手紙のモールス信号表現はどのように決定されますか?

"E"="。" "T" ="-"

なぜアルファベットではないのですか?たとえば、 "A" = "。"、 "B" = "-"、 "C" =".-"などです。

これらの文字で満たされたバイナリツリーをトラバースするためのアルゴリズムを開発しようとしています。

私の主な目的は「A」のような文字を検索することですが、右ノードまたは左ノードに分岐するタイミングを決定するために使用する条件がわかりません。

編集

これが私がやろうとしたことです。ここでは、パスを追跡しようとしています。しかし、「E」のような文字で試してみると、ルートが空であると表示されます。

static boolean treeContains( Node root, String item ) {
     // Return true if item is one of the items in the binary
         // sort tree to which node points.   Return false if not.
     if ( root == null ) {
           // Tree is empty, so it certainly doesn't contain item.
         System.out.print("Is null");
        return false;
     }
     else if ( item.equals(root.element) ) {
           // Yes, the item has been found in the root node.
        return true;
     }
     else if ( item.compareTo(root.element) < 0 ) {
           // If the item occurs, it must be in the left subtree.
           // So, return the result of searching the left subtree.
        res = res.concat(".");
        return treeContains( root.right, item );
     }
     else {
           // If the item occurs, it must be in the right subtree.
           // So, return the result of searching the right subtree.
        res = res.concat("-");
        return treeContains( root.left, item );
     }
  }  // end treeContains()
4

1 に答える 1

2

文字を含むバイナリ ツリーがある場合は、左をドット (.)、右をダッシュ​​ (-) とします。ツリーをトラバースすると、パスを追跡することで、各文字のバイナリ コードが何であるかがわかります。

編集

コードを見ると、ツリーを適切にトラバースしていません。まず、変数resが何であるかはわかりませんが、それは静的であるに違いありません。これは適切なコーディング方法ではありません。

あなたの本当の問題は、比較item.compareTo(root.element) < 0がこのツリーの有効な比較ではないことです。代わりに、テストとして再帰呼び出しを使用する必要がありますtreeContains( root.right, item )resこれが true を返す場合にのみ、ドット (.) を文字列に追加できます。false が返された場合はroot.left、ダッシュ (-) を追加して再帰呼び出しを行うことができます。

個人的には、このメソッドから文字列を返します。文字列は、これまでの文字のモールス符号、または文字が見つからない場合は null になります。正しいツリー トラバーサルから戻ったら、正しい文字列 (現在 res に使用しているもの) を構築します。

テストする必要があるのは、文字列の後ろではなく、文字列の前に連結して、正しく表示されるようにする必要がある場合があることです。

このツリーの真の有用性は、モールス符号をデコードして、一点鎖線の文字列を正しい文字に変換することにあります。これは単純なツリー トラバーサルになります。

于 2012-11-18T23:53:05.493 に答える