gtreetest.pp 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. program gtreetest;
  2. {$mode objfpc}{$H+}
  3. uses
  4. gtree;
  5. procedure WriteIntegerCallback(const i: Integer);
  6. begin
  7. Write(i,' ');
  8. end;
  9. type
  10. TIntegerTreeNode = specialize TTreeNode<Integer>;
  11. TIntegerTree = specialize TTree<Integer>;
  12. var
  13. Tree: TIntegerTree;
  14. Node,Tmp: TIntegerTreeNode;
  15. i: Integer;
  16. begin
  17. Node := TIntegerTreeNode.Create(0);
  18. for i := 1 to 3 do begin
  19. Tmp := TIntegerTreeNode.Create(i);
  20. Node.Children.PushBack(Tmp);
  21. end;
  22. Tmp := Node;
  23. Node := TIntegerTreeNode.Create(4);
  24. Node.Children.PushBack(Tmp);
  25. for i := 5 to 7 do begin
  26. Tmp := TIntegerTreeNode.Create(i);
  27. Node.Children.PushBack(Tmp);
  28. end;
  29. Tmp := Node;
  30. Node := TIntegerTreeNode.Create(8);
  31. Node.Children.PushBack(Tmp);
  32. for i := 9 to 10 do begin
  33. Tmp := TIntegerTreeNode.Create(i);
  34. Node.Children.PushBack(Tmp);
  35. end;
  36. Tree := TIntegerTree.Create;
  37. Tree.Root := Node;
  38. WriteLn('Depth first:');
  39. Tree.DepthFirstTraverse(@WriteIntegerCallback);WriteLn;
  40. WriteLn('Breadth first:');
  41. Tree.BreadthFirstTraverse(@WriteIntegerCallback);WriteLn;
  42. Tree.Free;
  43. end.