gpt4 book ai didi

java - 树打印额外字符

转载 作者:行者123 更新时间:2023-12-01 13:42:46 25 4
gpt4 key购买 nike

    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

最佳答案

这里有几个问题。这两个希望可以帮助您入门

首先,Java 中的参数是按值传递的,因此为它们赋值在方法外部是不可见的。所以“insert”的前四行什么也不做。

第二个是,一旦节点“满”(即左节点和右节点都非空),您就将下一个值插入到左子树和右子树中。

您也可能在插入方法中缺少“<”比较,但我不确定“printInOrder”是指插入顺序还是字典顺序。

关于java - 树打印额外字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20581248/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com