Einzelnen Beitrag anzeigen

Benutzerbild von MrMooed
MrMooed

Registriert seit: 18. Feb 2012
101 Beiträge
 
Delphi 7 Enterprise
 
#7

AW: Mathematischen Ausruck als Binärbaum darstellen

  Alt 3. Apr 2013, 14:26
da bin ich wieder

Habe sogar von Bäumen heute Nacht geträumt jedenfalls fiel mir die Lösung Heute Morgen dann plötlich ein Nach einigen Fehlschlägen und schusseligkeiten habe ich den Code etwas gekürzt und verschönert - aber das wichtigste er funktioniert (zur Zeit nur +,-,*,/ aber immerhin )

Falls ich Zeit habe und es irgendwen interessiert, kann ich das fertige Programm kommentieren/ erklären und hier im Software Bereich hochladen.

Die fertige TermToTree funktion sieht nun so aus:
Delphi-Quellcode:
function TMath.TermToTree(pTerm: String): TTree;
var
  Baum, tmp: TTree;
begin
  Baum := TTree.create;
  tmp := TTree.create;
  repeat
    case pTerm[1] of
      '0'..'9': Baum.setContent(Baum.getContent + pTerm[1]);
      else begin
             case pTerm[1] of
               '+','-' : begin
                           while not (Baum.getRoot = nil) do
                             Baum := Baum.getRoot;
                           tmp := TTree.create;
                         end;
               '*','/' : begin
                          if not (Baum.getRoot = nil)
                            then
                              begin
                                tmp := Baum.getRoot;
                                tmp.setRightTree(TTree.create);
                                tmp := tmp.getRightTree;
                            end;
                         end
               else showmessage('Ungültige Eingabe!');
             end;
             tmp.setContent(pTerm[1]);
             tmp.setLeftTree(Baum);
             tmp.setRightTree(TTree.create);
             Baum := tmp.getRightTree;
           end;
    end;
    delete(pTerm,1,1);
  until pTerm = '';

  //hocharbeiten bis zur wurzel und zurückgeben
  while not (Baum.getRoot = nil) do
    Baum := Baum.getRoot;
  result := Baum;
end;
Wenn jemand meine Gedanken nachvollziehen kann und optimierungsvorschläge hat - immer her damit

Geändert von MrMooed ( 3. Apr 2013 um 14:27 Uhr) Grund: falscher Code ^^
  Mit Zitat antworten Zitat