Vind het knooppunt dat de volgende waarde van de huidige node waarde in Binary Search Tree heeft

stemmen
0

Ik heb BST van BTNode<E>'s elk is voorzien van dubbele nummer en ik heb de volgende gebieden:

BTNode <E> root: Een verwijzing naar de wortel van de boom

BTNode <E> current: Een pointer naar het huidige knooppunt

Ik wil een methode Next () dat de huidige punten leveren aan het knooppunt dat de volgende waarde van de huidige node waarde moet schrijven

Hier is wat ik tot dusver heb gedaan:

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());
        }
    }

Kunt u mij helpen deze methode te schrijven?

De vraag is gesteld op 05/05/2011 om 16:57
bron van user
In andere talen...                            


1 antwoorden

stemmen
0

Heeft u controleren of de index geretourneerd door Arrays.binarySearch () is wat je verwacht? Ook de elementen moeten worden gesorteerd voordat u belt het. En het is niet duidelijk uit je code voorbeeld van hoe je de zaak te behandelen wanneer de waarde niet wordt gevonden in de array. Ervan uitgaande dat het is altijd in de array waarom bent u dan het ophalen van de waarde @ index + 1?

antwoordde op 05/05/2011 om 18:03
bron van user

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