Направления в бинарном дереве поиска - PullRequest
0 голосов
/ 22 апреля 2019

Я пытаюсь завершить код, который вставит узел в двоичное дерево, следуя указаниям «L», «R», «F» или «M», чтобы определить, где будет находиться узел.Мне нужно только завершить часть кода кода после цикла for.

Я предполагаю, что лучший способ реализовать это - использовать операторы if.

/ * Вставить узел вдвоичное дерево с указанием направления для достижения родительского узла данных * для вставки.Мы используем указания, чтобы найти, где в дереве «подключить» узел
* TODO 5. Завершить реализацию этого метода.* Пример: направления могут быть "LLRL": * Первые (n-1) символы (при условии, что направления имеют n символов) указывают, как перемещаться (влево, * вправо, отец, мать) от корня к узлу, после чего вставка будетпроисходят.* Последний символ указаний указывает, вставлять ли как левый узел или правый узел (или как родительскую линию * или материнскую линию).* Большая часть кода дана вам ниже, но посмотрите «TODO 5» для указания того, где завершить код.

public void insertDataAtLocation(String directions, T data) { 
    // if directions = "0", it means that the data to insert will be the root
    if (directions.equals("0")) {
        root = new BTNode<T>(data);
        return;
    }

    // if the data to insert was not the root, we need to traverse the tree so as to
    // find the location where to insert it.
    // We create an iterator, just like we do for singly linked lists
    BTNode<T> iter = root;
    // And now we follow directions:
    for (int j = 0; j < directions.length() - 1; j++) {
         if(directions.charAt(directions.length()) == 'L'){

        }
        if(directions.charAt(directions.length()) == 'R'){

        }

    }   
    // Let's build the node to be plugged
    BTNode<T> N = new BTNode<T>(data);
    // Now we "plug" / insert the new node in the proper side (left or right) 
    // depending on the last character of directions    
    if (directions.charAt(directions.length()-1) == 'L' || directions.charAt(directions.length()-1) == 'F') {
        iter.setLeft(N);   
    }
    if (directions.charAt(directions.length()-1) == 'R' || directions.charAt(directions.length()-1) == 'M') {
        iter.setRight(N);   
    }
}
...