Я в настоящее время нахожусь во вводном классе структур данных и действительно борюсь с одной из наших проблем с деревьями бинарного поиска. Это первый раз, когда я внедрил эту структуру данных и прилагаю все усилия, чтобы изучить ее.
Проблема:
Предполагается, что программа будет создавать и искать BST по имени и данным о происшествии на основе данных переписи детей, родившихся в этом году. Нам даны эти данные в текстовом файле.
Мне очень трудно понять, почему это не работает. Я действительно просто ищу кого-то, кто поведет меня в правильном направлении отсюда и даст мне хорошие отзывы о том, что у меня уже есть, потому что я чувствую себя действительно потерянным! Моя текущая работа ниже. Я реализую это в Java. Заранее спасибо!
public class Node {
String name;
int data;
Node leftChild;
Node rightChild;
public Node (String n, int d) {
name = n;
data = d;
}
public class BinarySearchTree` {
public static Node root;
public void addNode(String name, int data) {
Node newNode = new Node(name, data);
if (root == null) {
root = newNode;
} else {
Node focusNode = root;
Node parent;
while(true) {
parent = focusNode;
if (name.compareTo(focusNode.name) < 0) {
focusNode = focusNode.leftChild;
if (focusNode == null) {
parent.leftChild = newNode;
return;
} else {
focusNode = focusNode.rightChild;
if (focusNode == null) {
parent.rightChild = newNode;
return;
}
}
}
}
}
}
public Node searchName(String name) {
Node focusNode = root;
while (!focusNode.name.equals(name)) {
if (name.compareTo(focusNode.name) < 0) {
focusNode = focusNode.leftChild;
} else {
focusNode = focusNode.rightChild;
}
if (focusNode == null) {
return null;
}
}
return focusNode;
}
public static void main(String[] args) throws Exception {
BinarySearchTree tree = new BinarySearchTree();
FileReader file = new FileReader("/Users/mattspahr/Desktop/test.txt");
BufferedReader reader = new BufferedReader(file);
String str = null,
name = null,
num = null;
int data;
while(reader.readLine() != null) {
str = reader.readLine();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (c >= '0' || c <= '9') {
name = str.substring(0, i);
}
num = str.replaceAll("[^0-9]" , "");
}
data = Integer.parseInt(num);
tree.addNode(name,data);
Node n = tree.searchName("Buffy ");
System.out.println(n);
}
}
}