Recherchez le nœud qui a valeur suivante de la valeur actuelle en binaire noeud Recherche Arbre

voix
0

Je BST de BTNode<E>« s chacun a le double numéro et je les domaines suivants:

BTNode <E> root: Un pointeur vers la racine de l'arbre

BTNode <E> current: Un pointeur vers le noeud courant

Je veux écrire une méthode suivante () qui font des points en cours au noeud qui a valeur suivante de la valeur actuelle noeud

Voici ce que je l'ai fait jusqu'à présent:

public boolean Next()
    {
        // List<E> tempList = new ArrayList<E>();     // Creating new list (I defined this at the begining of the class)
        E tempValue = current.getElement();           // Gets the value of current element
        makeSortedList(root);               //
        E[] tempArray = (E[]) tempList.toArray();           // Convert the list to an array
        int index = Arrays.binarySearch(tempArray, tempValue);  // Find the position of current node value in the array
        if(index >= count) // count is no. of nodes in the tree
        {
             E targetValue = tempArray[index + 1];         // Store the target value in a temporary variable
             search(targetValue);                          // This method searches for the node that has targetValue and make that node as the current node
             return true;
        }
        else return false;
    }

    // This method takes the values of the tree and puts them in sorted list
    private void makeSortedList(BTNode<E> myNode)
    {
        if(myNode != null)
        {
            makeSortedList(myNode.getLeft());
            tempList.add(myNode.getElement());
            makeSortedList(myNode.getRight());
        }
    }

Pourriez-vous me aider à écrire cette méthode?

Créé 05/05/2011 à 16:57
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
0

Avez-vous vérifié que l'indice retourné par Arrays.binarySearch () est ce que vous attendez? Devraient également être triés les éléments avant de l'appeler. Et on ne sait pas de vous exemple de code comment vous gérez le cas lorsque la valeur ne se trouve pas dans le tableau. Si l'on suppose qu'il est toujours dans le tableau pourquoi vous récupérez alors l'indice valeur @ + 1?

Créé 05/05/2011 à 18:03
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more