Двоичное дерево с добавлением узла в конкретный существующий узел

Я пытаюсь создать двоичное дерево на Java, чтобы смоделировать путь в идеальном лабиринте.

Каждый узел Node<T> может иметь 2 детей (Node<T> left а также Node<T> right). Каждый узел определяется с T data как (х, у) координаты.

Для добавления нового узла мне нужно найти фактический узел (текущую позицию):

previousPosition = actualPosition; move(); tree.addNode(previousPosition, actualPosition);

И addNode должен искать узел previousPosition для добавления ребенка (actualPosition) влево или вправо (в зависимости от нулевого ребенка).

Мне нужна ваша помощь.

Мой код:

public class BinaryTree<T> {
    // Root node pointer. Will be null for an empty tree.
    private Node root;
    /*
--Node--
The binary tree is built using this nested node class.
Each node stores one data element, and has left and right
sub-tree pointer which may be null.
The node is a "dumb" nested class -- we just use it for
storage; it does not have any methods.
     */
    private static class Node<T> {
        Node<T> left;
        Node<T> right;
        T data;
        Node(T newData) {
            left = null;
            right = null;
            data = newData;
        }
    }
...
...
...
private Node<T> insert(Node<T> node, T parent, T data) {
        if(node.data.equals(parent)) {          
            if(node.left == null) {             
                node.left = new Node<T>(data);              
            } else if (node.right == null) {                
                node.right = new Node<T>(data);             
            } else {
                System.out.println("Children are not nulls");
            }

        } else {
            if(node.left != null) {
                insert(node.left, parent, data);                
            }
            if(node.right != null) {
                insert(node.right, parent, data);               
            }
        }       
        return node;
    }
}

0 ответов

Другие вопросы по тегам