Søke i et tre som ikke er BINARY

stemmer
0

Hei folkens, jeg har laget et tre som ikke er et binært tre. Nå, det jeg ønsker er å søke etter et element. Det viktigste er følgende: Siden jeg har ingen sammenligning sjanse i motsetning til et binært tre, må jeg finne noen andre måter å implementere koden. Her er hva jeg tenkte:

public TreeNode<City> search(City parent, TreeNode<City> t){
//As you guess, City class is irrelevant to the issue, I have no problem with City class.
    if (t.getCity().equals(parent)) {
        return t;
    }
    else if (t.hasLeftChild()){
        search(parent,t.getLeftChild());
    }
    else if(t.hasNextSibling()){
        search(parent,t.getNextSibling());
    }
    else//Since I know that case will never happen, the returned value is unimportant
        return t;
    }

Selvfølgelig, gjorde den koden ikke fungerer. Den vanskelige delen er at jeg må returnere verdien jeg søker etter så snart jeg finner den. Likevel, hvis jeg ikke finner det, jeg har fortsatt å returnere noe. Hvordan skal jeg gjøre det ???

Publisert på 25/05/2011 klokken 14:03
kilden bruker
På andre språk...                            


2 svar

stemmer
0

For å starte, må du (eller annet) bruke den returnerte verdien av rekursive kall til search()- trolig returndet:

public TreeNode<City> search(City parent, TreeNode<City> t){
    if (t.getCity().equals(parent)) {
        return t;
    }
    else if (t.hasLeftChild()){
        return search(parent,t.getLeftChild());
    }
    else if(t.hasNextSibling()){
        return search(parent,t.getNextSibling());
    }
    return null;
}
Svarte 25/05/2011 kl. 14:07
kilden bruker

stemmer
0

Metacode for rekursiv funksjon du leter etter

public TreeNode<City> search(City parent, TreeNode<City> t){
    if (t.getCity().equals(parent)) {
        return t;
    }

    if (t.hasLeftChild()) {
        if (tmp = search(parent,t.getLeftChild())) {
            return tmp;            
        }
    }

    if (t.hasnextSibling()) {
        if (tmp = search(parent,t.getnextSibling())) {
            return tmp;            
        }
    }

    return false;
}
Svarte 25/05/2011 kl. 14:15
kilden bruker

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