如何在BinarySearchTree中创建具有节点的assignFirst方法?

时间:2019-04-29 21:34:49

标签: java recursion binary-search-tree nodes

我有一个binarySearch树,我想创建一个方法AssignFirst。

此方法应在树中找到值最小的节点,并 相应地更新树的“第一”属性。

我有很多方法,但是我不想在这里包括所有方法,因为我想让它简短而简单。 因此,我将包括该类以及该类中的一些功能。

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 void assignFirst()
{
    if (root.left == null)
    {
        first.data = root.data;
    }
    else
        {
        first.data = root.left.data;
    }
}
public class Iterator
{
    private BSTNode<E> currentNode;

    public Iterator()
    {
        currentNode = first;
    }

    public boolean hasNext()
    {
        return currentNode != null;
    }

    public E next()
    {
        E value = currentNode.data;
        currentNode = currentNode.next;
        return value;
    }
}
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;
    }
}
}

我更新了我的方法,如下所示。我仍然不确定这是否是正确的方法。

private void assignFirst()
{
    if (first.left != null)
    {
        first = first.left;
    }
    else
        {
        first = root;
    }
}

1 个答案:

答案 0 :(得分:0)

我知道了。我是这样写的。

private void assignFirst()
{
    BSTNode<E> node = root;
    while(node.left != null)
    {
        node = node.left;
    }
    first = node;
}