我正在尝试做任务,但我遇到了第一步的麻烦。以下链接是上下文的分配:
示例输入是:
A0
0
A00
ab000
其输出为:
树1:
无效!
树2:
身高:-1
路径长度:0
完成:是的 后序:
树3:
身高:0
路径长度:0
完成:是的 后序:a 树4:
身高:1
路径长度:1
完成:是的 后序: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);
}
}
}
我正在尝试测试我正在使用预订方法正确构建二叉树,但每当我运行该程序时,它似乎陷入某个无限循环。任何人都可以帮助指出导致它的原因吗?我实际上是在正确的轨道上吗?有没有人对如何构建这个特定的二叉树有任何暗示?
感谢。
答案 0 :(得分:1)
它不在无限循环中。它只是等待来自System.in的输入
答案 1 :(得分:1)
(char) 0
是由Unicode U + 0000(NUL)表示的字符。您希望在测试中使用'0'
(U + 0030)。
顺便说一句,问题设定者没有说明给定的预订顺序是深度优先还是广度优先(或其他东西),因此无法确定如何正确地重建树。