gpt4 book ai didi

java - 将字符串添加到 BST 时出错

转载 作者:行者123 更新时间:2023-12-01 15:29:06 25 4
gpt4 key购买 nike

我正在将字符串 ArrayList 中的值添加到 BST,并且在“tree.add(s);”行上出现空指针错误在跟踪我的代码后,我无法弄清楚为什么会发生这种情况。有人可以帮忙吗:

public class BinaryTree {

public Node root;
public BinaryTree tree;

private static class Node {
Node left;
Node right;
String data;

Node(String s) {
left = null;
right = null;
data = s;
}
}

public BinaryTree plantTree(ArrayList<String> dict) {

Collections.shuffle(dict);

for (String s : dict) {
s.toUpperCase();
System.out.print(s);
tree.add(s);
}

System.out.print(tree);
System.out.println();
return tree;

}

/**
* Creates an empty binary tree
*/
public BinaryTree() {
root = null;
}

public boolean search(String data) {
return (search(root, data));
}

private boolean search(Node node, String data) {
if (node == null) {
return (false);
}

if (data == node.data) {
return (true);
} else if (data.compareTo(node.data) > 0) {
return (search(node.left, data));
} else {
return (search(node.right, data));
}
}

public void add(String data) {
root = add(root, data);
}

private Node add(Node node, String data) {
if (node == null) {
node = new Node(data);
} else {
if (data.compareTo(node.data) > 0) {
node.left = add(node.left, data);
} else {
node.right = add(node.right, data);
}
}

return (node);
}

}

最佳答案

在使用之前,您必须将tree 变量设置为某个值。例如:

public BinaryTree plantTree(ArrayList<String> dict) {

tree = new BinaryTree(); // important!

Collections.shuffle(dict);

for (String s : dict) {
s.toUpperCase();
System.out.print(s);
tree.add(s);
}

System.out.print(tree);
System.out.println();
return tree;

}

也许tree应该是方法的局部变量而不是实例变量?

关于java - 将字符串添加到 BST 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9779407/

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