A6:mein Pseudo code

  • wie versprochen eine (hoffentlich) richtige version.
    ich hab das ganze als rekursion geschrieben.wär nett wenn jemand sagen könnte obs stimmt.


    suchen[root,x ]
    diff=root.key-x;
    if diff=0
    return root;
    if root=Null
    return "Fehler";
    if diff >0
    {mindiff=min(leftson,x,diff);}
    if diff<0
    {mindiff=min(rigthson,x,diff);}
    if mindif<0 UND diff<0
    return fehler;
    else
    { if mindiff>=0 UND mindiff<=diff
    return mindiff+x;
    else
    return diff+x
    }



    min[Knoten,x,diff]
    for Knoten ungleich Null
    {diffcur=Knoten.key-x;
    if diffcur >0
    a={min(leftson,x,diffcur);}
    if diffcur<0
    a={min(rigthson,x,diffcur);
    if diffcur>=0
    {
    if a=>0 UND a<diffcur
    retrun a;
    else
    return diffcur;}
    else
    return a;
    }
    for Knoten=Null
    return -1;}

  • vielleicht ne kleine erläuterung:
    -je kleiner die zahl knoten.key-x ist desto näher
    ist der knoten an x
    -ist die zahl kleiner áls 0,muss der wert im knoten kleiner x sein und kann somit nicht gesucht werden
    -der algorythmus min geht bis er null erreicht da gibt er dann ein -1 zurüch staat sich nochmal aufzurufen.wär ja sinnlos.
    -jetzt wird immer kontrolliert welcher posetive abstand am nächsten zu x ist.
    -dieser wird dann ausgegeben,oder wenn er nicht exestiert wird ein fehler returniert.
    ich hoffe das die idee für denn code jetzt verständlich ist
    ;)