AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Freepascal AVLTree, Binären Baum allgemein verstehen?
Thema durchsuchen
Ansicht
Themen-Optionen

Freepascal AVLTree, Binären Baum allgemein verstehen?

Ein Thema von MPeters · begonnen am 4. Mär 2023 · letzter Beitrag vom 27. Mär 2023
 
MPeters

Registriert seit: 20. Nov 2022
9 Beiträge
 
#1

Freepascal AVLTree, Binären Baum allgemein verstehen?

  Alt 4. Mär 2023, 19:16
Hallo,

Ich habe folgendes Codestück:

Delphi-Quellcode:
type
  TMyData = class
  public
    Filename: string;
    Content: string;
  end;

function CompareMyData(Data1, Data2: Pointer): integer;
begin
  Result:=CompareFilenames(TMyData(Data1).Filename,TMyData(Data2).Filename);
end;

var
  tree: TAVLTree;
  myData1: TMyData;
  myData2: TMyData;
  MyData3: TMyData;
  MyData4: TMyData;
  MyData5: TMyData;
  MyData6: TMyData;
  tree: TAVLTree;
  node1: TAVLTreeNode;
  node2: TAVLTreeNode;
  node3: TAVLTreeNode;
  node4: TAVLTreeNode;
  node5: TAVLTreeNode;
  node6: TAVLTreeNode;

  root: TAVLTreeNode;

  constructor TmyApp.create;
  begin

    tree := TAVLTree.Create(@CompareMyData);
    root := nil;
    node1 := TAVLTreeNode.Create;
    node1.Parent := root;
    myData1 := TMyData.Create;
    myData1.Content := 'Dateninhalt'; //sei jetzt mal die Wurzel
    node1.Data := myData1;
    node1.Left := nil;
    node1.right:= nil;
    tree.Add(node1);

    node2 := TAVLTreeNode.Create;
    myData2 := TMyData.Create;
    myData2.Content := 'Komponente'; //könnte ebenso Wurzel sein
    node2.Data:=myData2; //wie Standard in der Komponentenpalette
    node1.Right := node2;
    node1.Left := nil;
    node2.Parent := node1;
    tree.Add(node2);

    node3 := TAVLTreeNode.Create;
    MyData3 := TMyData.Create;
    MyData3.Content:='Formular'; //könnte Subknoten für Komponente sein
    node3.Data := myData3; //hier zum Beispiel ein Formular
    node2.right := node3;
    node2.left := nil;
    node3.Parent := node2;
    tree.Add(node3);

    node4 := TAVLTreeNode.Create;
    MyData4 := TMyData.Create;
    MyData4.Content:='ToolBar'; //oder eine ToolBar
    node4.Data := myData4;
    node3.Right := node4;
    node3.Left := nil;
    node4.Parent := node3;
    tree.Add(node4);

    node5 := TAVLTreeNode.Create;
    MyData5 := TMyData.Create;
    myData5.Content := 'Directories'; //Das wäre dann ein Hauptverzeichnis
    node5.Data := myData5;
    node4.Left := node5;
    node4.Right := nil;
    node5.Parent := node4;
    tree.Add(node5);

    node6 := TAVLTreeNode.Create;
    MyData6 := TMyData.Create;
    myData6.Content := 'Alternativen'; //und hier irgendein Unterverzeichnis
    node6.Data := myData6;
    node5.Right := node6;
    node5.left := nil;
    node6.Parent := node5;
    tree.Add(node6);
Ich will hier Daten in einer Baumstruktur ablegen und suche eine allegemeine Vorgehensweise. Wie war das gleich noch mal mit dem binären Baum?

Wo gibt es dazu verständliche Doku?

Irgendwas mache ich hier noch verkehrt.

Wie würde der Baum für die Komponentenpalette aussehen und wie für einen Datei Verzeichnisbaum?

Ich muss ja dann einerseits den Baum korrekt aufbauen und dann auch korrekt anzeigen.
Dazu muss ich ja die Konten auch wieder finden.

Geändert von MPeters ( 4. Mär 2023 um 19:22 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz