0

予約注文ビット文字列 (ストリームの標準入力にパイプされる) からバイナリ ツリーを構築する必要があり、これについての私の理解が正しいかどうか疑問に思っていました。

11110001000 の予約注文ビット文字列 (1 は内部ノードを示し、0 は外部ノードを示す) を持っていた場合、このようなバイナリ ツリーになりますか?

        1
       / \
      1   0
     / \
    1   1
   / \ / \
  1  00   0
 / \
0   0

preorder ビット文字列 (入力によって与えられる) からバイナリ ツリーを構築した後、高さ、パスの長さ、およびバイナリ ツリーが完成しているかどうかも確認する必要があります。しかし、Java でプリオーダー ビット文字列 -> バイナリ ツリー変換の実装を開始する方法がわからないため、これを実行できるところまで進むのに苦労しています。予約注文のビット文字列からバイナリ ツリーを構築する方法について、ヒントを教えてください。

4

2 に答える 2

1

ここから始められます。また、C++ の知識がある場合は、この記事も役立ちます。

主なアイデアは、左右のノードへの参照を持つ Node クラスを持つことです。あとは、ノード間を移動するだけです。

于 2011-05-04T13:16:28.270 に答える
1

少し前に作成したこの単純なプログラムから始めて、手動入力の代わりにバイナリ文字列を入力として受け入れるように適応させることができます。

import javax.swing.JOptionPane;

class Node {
    int info;
    Node fs;
    Node fd;
}

class BinaryTree {

    public static void main(String[] args) {

        Node tree = null;
        tree = insertRecursivePreorder(tree);

    }

    static Node insertRecursivePreorder (Node n) {
      String input = JOptionPane.showInputDialog("Insert node, 0 to end: \n");
      int dato = Integer.parseInt(input);

      if (dato == 0) {
          n=null;
      } else {
          n=new Node();
          n.info=dato;
          n.fs=insertRecursivePreorder(n.fs);
          n.fd=insertRecursivePreorder(n.fd);
      }
      return n;
    }

}
于 2011-05-04T13:31:22.730 に答える