我正在编写一个程序,使用BST按升序对数字字符串进行排序,并将排序的字符串打印为文本,但我似乎无法理解为什么它不能正常运行。当我尝试使用StringBuilder从树构建String时,似乎树是空的。我原本以为我的问题是我在下面写的addNode()方法:
public static TreeNode addNode(TreeNode root,char token){
if (root == null){
root = new TreeNode(token);
return root;
} else if (root.value >= token) {
root.left = addNode(root.left, token);
} else {
root.right = addNode(root.right, token);
}
System.out.println(root);
return root;
}
令牌和TreeNode的值正从此方法中读取,该方法读取字符串:
public static TreeNode translateString(String tokenize){
TreeNode r = new TreeNode();
for(int i=0; i < tokenize.length(); i++){
char token = tokenize.charAt(i);
System.out.println(token);
if (Character.isDigit(token)){
r = addNode(r, token);
} else if (token == ' ') {
continue;
}
}
return r;
}
我原本以为我的问题是使用addNode()方法,但是如果我追踪我想法它正在做什么似乎有意义。但是,当它打印输出字符串时,我没有得到任何值。我对addNode()方法所做的任何更改似乎都不起作用,所以我现在想的是问题在于translateString()方法。我已经被困在这几个小时了,我不知道从哪里开始。任何新鲜的眼睛都会非常感激!
答案 0 :(得分:0)
你遇到的一个问题是看起来无辜:
TreeNode r = new TreeNode();
通过这样做,您可以跳过null
中的addNode()
逻辑。相反,您将使根成为字符值为零的节点,而该节点不是可打印字符。我想你可能想要这样的东西:
TreeNode r = null;