我正试图在红黑二进制搜索树的旧java程序中使用打印出树(即st.keys(((
导入java.util.Scanner
和
导入edu.princeton.cs.algs4.StdIn
导入edu.princeton.cs.algs4.StdOut;
由于我不知道的原因,它似乎不起作用。我也试过调试。在两个版本的main((中,程序在第一个for循环后停止。在正确的方向上提供任何帮助都是非常好的。
以下是带有终端输出的代码的一些图像:main((的替代版本main((的初始版本
初始main((使用导入edu.princeton.cs.algs4.StdIn:
public static void main(String[] args) {
RedBlackBST<String, Integer> st = new RedBlackBST<>();
for (int i = 0; !StdIn.isEmpty(); i++) {
String key = StdIn.readString();
st.put(key, i);
}
StdOut.println();
for (String s : st.keys())
StdOut.println(s + " " + st.get(s));
StdOut.println();
//StdOut.println(st.check());
st.delete("t");
System.out.println(st.keys());
}
备用main((使用导入java.util.Scanner:
public static void main(String[] args) {
RedBlackBST<String, Integer> st = new RedBlackBST<>();
Scanner input = new Scanner(System.in);
for(int i=0; input.nextLine() != ""; i++){
String key = input.nextLine(); // Use in.nextLine() for line-by-line reading
st.put(key, i);
System.out.println(input);
}
input.close();
for (String s : st.keys()){
System.out.println(s + " " + st.get(s));
System.out.println();
//StdOut.println(st.check());
st.delete("t");
System.out.println(st.keys());
}
}
终端输出(包括用户输入(:
/usr/lib/jvm/java-11-openjdk-amd64/bin/java -Dfile.encoding=UTF-8 @/tmp/cp_do3cqf4bgpqm37l69q1dfdnql.argfile RedBlackBST
t
a
l
l
t
r
e
e
s
^Z
[1]+ Stopped /usr/lib/jvm/java-11-openjdk-amd64/bin/java -Dfile.encoding=UTF-8 @/tmp/cp_do3cqf4bgpqm37l69q1dfdnql.argfile RedBlackBST
我用ctrl+d得到了正确的输出,我使用ctrl+z退出