在Java中从字符串实现二叉搜索树
我正在编写一个程序,使用BST按升序对数字字符串进行排序,并将排序后的字符串打印为文本,但我似乎无法解释它为什么不能正常工作。当我尝试使用StringBuilder从树构建字符串时,似乎树是空的。我最初认为我的问题在于我在下面编写的addNode()方法:在Java中从字符串实现二叉搜索树,java,Java,我正在编写一个程序,使用BST按升序对数字字符串进行排序,并将排序后的字符串打印为文本,但我似乎无法解释它为什么不能正常工作。当我尝试使用StringBuilder从树构建字符串时,似乎树是空的。我最初认为我的问题在于我在下面编写的addNode()方法: public static TreeNode addNode(TreeNode root,char token){ if (root == null){ root = new TreeNode(token);
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;
}
正在从此读取字符串的方法中提取令牌和树节点的值:
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;
}
publicstatictreenodetranslatestring(字符串标记化){
TreeNode r=新的TreeNode();
for(int i=0;i
我最初认为我的问题是addNode()方法,但如果我跟踪我认为它在做什么,这似乎是有道理的。但是,当它打印输出字符串时,我没有得到任何值。我对addNode()方法所做的任何更改似乎都不起作用,因此我现在认为问题在于translateString()方法。我已经被困在这个问题上好几个小时了,我不知道接下来该怎么办。任何新的眼睛将不胜感激 您遇到的一个问题是这条看起来很无辜的线:
TreeNode r = new TreeNode();
这样做,您将跳过addNode()
中的null
逻辑。取而代之的是将根节点设置为字符值为零的节点,这不是可打印的字符。我想你可能想要这样的东西:
TreeNode r = null;
欢迎来到堆栈溢出!看起来您需要学习使用调试器。请随便吃点。如果您以后仍有问题,请随时回答更具体的问题。使用调试器查看
translateString
末尾的树,并查看其中的内容。