Java 如何使用BinarySearchTree中的节点创建assignFirst方法?

Java 如何使用BinarySearchTree中的节点创建assignFirst方法?,java,recursion,binary-search-tree,nodes,Java,Recursion,Binary Search Tree,Nodes,我有一个binarySearch树,我想先创建一个方法 此方法应在树中找到具有最小值和最小值的节点 相应地更新树的“first”属性 我有很多方法,但我不想把它们都包括在这里,因为我想保持它的简洁。 因此,我将包括该类和该类中的一些特性 public class BinarySearchTree<E extends Comparable<E>> { private BSTNode<E> root; // root of overall tree private

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

此方法应在树中找到具有最小值和最小值的节点 相应地更新树的“first”属性

我有很多方法,但我不想把它们都包括在这里,因为我想保持它的简洁。 因此,我将包括该类和该类中的一些特性

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()
{
    BSTNode<E> node = root;
    while(node.left != null)
    {
        node = node.left;
    }
    first = node;
}
private void assignFirst()
{
BSTNode=root;
while(node.left!=null)
{
node=node.left;
}
第一个=节点;
}

我想出来了。我是这样写的

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

您当前的
assignFirst()
方法似乎与您描述的问题几乎无关。您正在修改某些节点的数据,而不是设置树的属性。@JohnBollinger我知道这是不正确的,我是在询问如何启动它的策略。无论如何,您有一个BST,并且您希望标识具有最小值的节点。想一想那个问题。如果从根节点开始,您会朝哪个方向查找较小的节点?如果你在任何一个节点上,你会朝哪个方向去寻找较小的节点?你怎么知道什么时候到达最小值的节点?你向左走,直到你不能再前进@Johnbollingermaks对我来说很有意义。您当前的
assignFirst()
方法似乎与您描述的问题几乎无关。您正在修改某些节点的数据,而不是设置树的属性。@JohnBollinger我知道这是不正确的,我是在询问如何启动它的策略。无论如何,您有一个BST,并且您希望标识具有最小值的节点。想一想那个问题。如果从根节点开始,您会朝哪个方向查找较小的节点?如果你在任何一个节点上,你会朝哪个方向去寻找较小的节点?你怎么知道什么时候到达最小值的节点?你向左走,直到你不能再前进@约翰伯林格曼对我来说很有意义。