Создание и поиск BST из текстового файла - PullRequest
0 голосов
/ 12 мая 2018

Я в настоящее время нахожусь во вводном классе структур данных и действительно борюсь с одной из наших проблем с деревьями бинарного поиска. Это первый раз, когда я внедрил эту структуру данных и прилагаю все усилия, чтобы изучить ее.

Проблема: Предполагается, что программа будет создавать и искать 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);
    }
}   

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...