Как назначить узел в качестве предыдущего узла в Java? - PullRequest
0 голосов
/ 01 мая 2019

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

Вот мой блок кода:

private BSTNode<E> add(BSTNode<E> node, E value, BSTNode<E> parent, BSTNode<E> prev)
{
    if (node == null)
    {
        node = new BSTNode<E>(value);
        node.parent = parent;

       //issue takes place here. 
        node.next = node;
        node = prev;

        this.numElements++;
    }
    else if (node.data.compareTo(value) > 0)
    {
        node.left = add(node.left, value, node , getPrevNode(node));
    }
    else if (node.data.compareTo(value) < 0)
    {
        node.right = add(node.right, value, node, node.parent);
    }
    return node;
}

Это внутри этого класса

public class BinarySearchTree<E extends Comparable<E>>
{
private BSTNode<E> root; // root of overall tree
private int numElements;
private BSTNode<E> first;
// post: constructs an empty search tree
public BinarySearchTree()
{
    this.root = null;
    this.numElements = 0;
}

private static class BSTNode<E>
{
    public E data;
    public BSTNode<E> left;
    public BSTNode<E> right;
    public BSTNode<E> parent;
    public BSTNode<E> next;

    public BSTNode(E data)
    {
        this(data, null, null, null, null);
    }

    public BSTNode(E data, BSTNode<E> left, BSTNode<E> right, BSTNode<E> parent, BSTNode<E> next)
    {
        this.data = data;
        this.left = left;
        this.right = right;
        this.parent = parent;
        this.next = next;
    }
 }
}

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

1 Ответ

0 голосов
/ 02 мая 2019

Нашел ответ, который искал, это было просто

if(prev == null)
        {
            node.next = parent;
        }
        else
        {
            node.next = prev.next;
            prev.next = node;
        }
...