Finn den noden som har neste verdien av gjeldende node verdi i binært søketre

stemmer
0

Jeg har BST av BTNode<E>'s hver har dobbelt antall og jeg har følgende felt:

BTNode <E> root: En peker til roten av treet

BTNode <E> current: En peker til den aktuelle noden

Jeg ønsker å skrive en metode Next () som gjør dagens poeng til node som har neste verdien av gjeldende node verdi

Her er hva jeg har gjort så langt:

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

Kan du hjelpe meg med å skrive denne metoden?

Publisert på 05/05/2011 klokken 15:57
kilden bruker
På andre språk...                            


1 svar

stemmer
0

Visste du sjekke at indeksen returneres av Arrays.binarySearch () er hva du forventer? Også elementene skal sorteres før kalle det. Og det er ikke klart fra deg kode eksempel hvordan du håndterer saken når verdien ikke er funnet i matrisen. Antar det er alltid i rekken hvorfor er du så hente verdien @ indeksen + 1?

Svarte 05/05/2011 kl. 17:03
kilden bruker

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