0
문자열의 ArrayList에서 BST로 값을 추가하고 "tree.add (s);"에 null 포인터 오류가 발생합니다. 내 코드를 추적 한 후에 왜 이런 일이 일어나는지 알 수 없습니다. 누군가가 도와주세요 수 :BST에 문자열을 추가하는 중 오류가 발생했습니다.
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"의 각 값을 출력하는 toString() 메서드를 구현하는 방법에 대해 한 가지 더 궁금한 점이 있습니다. System.out.print (tree)를 사용할 때 이상한 값을 출력합니다. 이전에 본 적이 있었고 toString() 메서드를 재정 의하여 올바르게 인쇄했습니다. –
'toString'이 기본값을 재정의하도록 올바르게 선언되지 않은 것 같습니다. 그래도 새로운 질문을하면 더 많은 잠재 고객을 확보하게됩니다. – Joni