Keresés a fa, amely nem bináris

szavazat
0

Hé srácok, hoztam létre egy fát, amely nem egy bináris fa. Most, amit én szeretnék, hogy keressen egy elem. A lényeg a következő: Mivel nincs összehasonlítás esélye ellentétben egy bináris fa, meg kell találni egy másik módját, hogy végre a kódot. Itt mit gondoltam:

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

Persze, hogy a kód nem működik. A legnehezebb az, hogy van, hogy visszatérjen az értéket keresem amint találom. Mégis, ha nem találom meg, még mindig van, hogy visszatérjen valamit. Hogy fogom csinálni ???

A kérdést 25/05/2011 15:03
a forrás felhasználó
Más nyelveken...                            


2 válasz

szavazat
0

Kezdeni, meg kell (valahogy) nem használja a visszaadott érték a rekurzív hívások search()- talán returnez:

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;
}
Válaszolt 25/05/2011 15:07
a forrás felhasználó

szavazat
0

metacode a rekurzív függvény, amit keres

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;
}
Válaszolt 25/05/2011 15:15
a forrás felhasználó

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