Двоичное дерево с добавлением узла в конкретный существующий узел
Я пытаюсь создать двоичное дерево на 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;
}
}