View Full Version : A6:mein Pseudo code
hmm,
mein pseudocode war ziemlich falsch.ich werd mal ne richtige version posten,wenn ich eine habe.
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
;)
func biggestminbigx(root,x) {
p=root;found=NULL;
while(p!=NULL) {
if(p.key < x) p=p.leftchild;
else if (p.key > x) found = p; p=p.rightchild;
else return x
} return found;
hat O(ld n) bzw. O(höheDesBaums) und ist etwas kürzer
so gehts natürlich auch.wollt halt sehen ob ichs mit der rekursion hinkriege.
vBulletin® v3.7.1, Copyright ©2000-2008, Jelsoft Enterprises Ltd.