Găsiți nodul care are valoare de următoarea valoare nodului curent în binar de căutare copac

voturi
0

Am BST de BTNode<E>e fiecare are număr dublu și am următoarele domenii:

BTNode <E> root: Un pointer la rădăcina arborelui

BTNode <E> current: Un pointer la nodul curent

Vreau să scrie o metoda următoare (), care va face punctele de curent la nodul care are valoarea următoare valorii nodului curent

Iată ce am făcut până acum:

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

Ați putea să mă ajute să scrie această metodă?

Întrebat 05/05/2011 la 16:57
sursa de către utilizator
În alte limbi...                            


1 răspunsuri

voturi
0

Ai verificat că indicele returnat de Arrays.binarySearch () este ceea ce vă așteptați? De asemenea, elementele trebuie să fie sortate înainte de a apela la aceasta. Și nu este clar din exemplul de cod vă modul în care se ocupe de cazul în care valoarea nu este găsit în matrice. Presupunând că este întotdeauna în matrice de ce apoi recuperarea indicele valorii @ + 1?

Publicat 05/05/2011 la 18:03
sursa de către utilizator

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