課題をやろうとしていますが、最初のステップで問題があります。以下のリンクは、コンテキストの割り当てです。
入力例は次のとおりです。
a0
0
a00
ab000
次の出力が得られます。
ツリー 1:
無効です。
Tree 2:
height: -1
path length: 0
complete: yes
postorder:
Tree 3:
height: 0
path length: 0
complete: yes
postorder: a
Tree 4:
height: 1
path length: 1
complete: yes
postorder: ba
入力からバイナリ ツリーを実際に構築することに固執しているため、割り当てを進めることができません。これまでに思いついたコードは次のとおりです。
public class btsmall {
int k = 0;
char[] cArray;
public static void main(String[] args) throws IOException {
new btsmall().run();
}
static class Node {
Node left;
Node right;
char value;
public Node(char value) {
this.value = value;
}
}
public void run() throws IOException {
String preorder;
InputStreamReader input = new InputStreamReader(System.in);
BufferedReader reader = new BufferedReader(input);
while ((preorder = reader.readLine()) != null) {
cArray = preorder.toCharArray();
Node tree = null;
insert(tree);
preorder(tree);
k = 0;
}
}
public void insert(Node node) {
if (cArray[k] == (char) 0) {
node = new Node((char) 0);
node.left = node.right = null;
k++;
} else {
node = new Node(cArray[k]);
k++;
insert(node.left);
insert(node.right);
}
}
public void preorder(Node node) {
if (node != null) {
System.out.println(node.value + " ");
preorder(node.left);
preorder(node.right);
}
}
}
preorder メソッドを使用してバイナリ ツリーが正しく構築されていることをテストしようとしていますが、プログラムを実行するたびにどこかで無限ループに陥っているようです。誰がそれを引き起こしているのかを指摘するのを助けることができますか? そして、私は実際にこれで正しい軌道に乗っていますか? この特定のバイナリ ツリーを構築する方法について、ヒントはありますか?
ありがとう。