Re: AVL Baum
Verfasst: 04.12.2009 17:27
Der Syntaxbaum wird nicht balanciert. Wenn du einen neuen Knoten in den AVL Baum einfügst, dann prüfst du bis zur Wurzel ob ein Knoten unbalanciert ist. Wenn ja rotiere ihn damit der Knoten wieder balanciert ist. D.h. angenommen du hast einen Syntaxbaum der so aussieht:Josef Sniatecki hat geschrieben:OK, ehrlich gesagt verstehe ich jetzt immer noch nicht den Unterschied zwischen einem AVL-Baum und demDarkDragon hat geschrieben: Aber da würde der AVL Baum die Prioritäten der Operationen durcheinanderbringen und eventuell wären dann Operatoren plötzlich Blattknoten was nicht sein kann bei Infix. Immerhin geht der Parser/Interpreter dann durch den Baum durch und Rechnet bei einem "+" Knoten dann LinkerTeilbaum + RechterTeilbaum.
Syntaxbaum, den ich verwendet habe. Die Operatoren sind in meinem Fall Knoten, die maximal zwei weitere
Unterknoten besitzen können, die genau eine Ebene darunter liegen...
Code: Alles auswählen
+
a *
c d
Code: Alles auswählen
+
a *
c +
d e
Code: Alles auswählen
*
+ +
a c d e
Ein Ausdrucksbaum ist auch nicht nur in Binärbaum. Nehmen wir einmal an du hast einen Funktionsaufruf in deinem Ausdruck, dann hast du einen Baum mit mehr als 2 Nachfolgern:
testfkt(a, b, c, d)
Code: Alles auswählen
testfkt
a b c d