public class TreeWords {
public static void main (String[] args){
Tree tree = new Tree();
System.out.println("Enter your string.");
Scanner in = new Scanner(System.in);
String input = in.next();
for (char ch : input.toCharArray()) {
Tree tmp = new Tree(ch);
tree.insert(tree, tmp);
}
tree.printInOrder(tree);
}
}
class Tree {
//Tree variables
char letter;
Tree left, right;
//Constructors
public Tree(){
left = right = null;
}
public Tree(char input) {
left = right = null;
letter = input;
}
//Methods
public void printInOrder(Tree root) {
if (root == null) return;
printInOrder(root.left);
System.out.print(root.letter);
printInOrder(root.right);
}
public void insert(Tree root, Tree tmp) {
if (root == null) {
root = tmp;
return;
}
if (root.left == null) {
root.left = tmp;
return;
}
if (root.right == null) {
root.right = tmp;
return;
}
insert(root.left, tmp);
insert(root.right, tmp);
}
}
这是我正在处理的小程序的示例代码。基本上,它应该为每个树节点添加一个字符。但不知何故,似乎要么打印额外的字符,要么添加额外的字符。 例如:
Input : aaa
Output : aaaa
Input : hello
Output : oloholo�oloeolo
答案 0 :(得分:1)
这里有几个问题。这两个将有希望让你开始
第一个是Java中的参数是按值传递的,因此在方法之外不会看到为它们赋值。所以前四行'插入'什么都不做。
第二个是一旦一个节点满了'39'。 (即左和右都是非空的)你将下一个值插入左右子树。
您也可能错过了'<'在插入方法中的比较,但我不确定是否' printInOrder'是指插入顺序或词典顺序。