Witam piszę program w którym muszę zapisać słowa pobrane z pliku txt w drzewie BST. Napisałem już funkcję dodawania słowa do drzewa lecz mam z nią mały problem ;p oto kod

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  Drzewo = class
    Wartosc: string;
    PLisc: Drzewo;
    LLisc: Drzewo;
end;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Dodaj(wartosc:string; drzewo:Drzewo);
  private
    { Private declarations }
  public
    { Public declarations }
  end;


var
  Form1: TForm1;
  drzewo1: Drzewo;
implementation
 procedure TForm1.Dodaj(wartosc:string; drzewo:Drzewo);
 begin
    if drzewo.Wartosc = '' then
    begin
    drzewo.Wartosc:=wartosc;
    ShowMessage('dodalem');
    end
    else if wartosc > drzewo.Wartosc then
    begin
       if drzewo.PLisc = NIL then
       begin
       drzewo.PLisc:= Drzewo.Create;
       drzewo.PLisc.Wartosc:=wartosc;
       ShowMessage('dodalem do prawego');
       end
       else
       begin
       Dodaj(wartosc, drzewo.PLisc);
       ShowMessage('dodaje do prawego');
       end;
    end
    else if wartosc <= drzewo.Wartosc then
    begin
       if drzewo.LLisc = NIL then
       begin
       drzewo.LLisc:= Drzewo.Create;
       drzewo.LLisc.Wartosc:=wartosc;
       ShowMessage('dodalem do lewego');
       end
       else
       Dodaj(wartosc, drzewo.LLisc);
    end;
 end;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 drzewo1:= Drzewo.Create;
 Dodaj('abc', drzewo1);
 Dodaj('bbc', drzewo1);
 ShowMessage(drzewo1.PLisc.PLisc.Wartosc);


end;

end.

problem polega na tym, że po takich wywołaniach Dodaj('abc', drzewo1);
Dodaj('bbc', drzewo1); w korzeniu mamy 'bbc', w prawym poddrzewie tez 'bbc' i w każdym jego prawym poddrzewie... więc robiąc takie wywołanie ShowMessage(drzewo1.PLisc.PLisc.Wartosc); otrzymamy 'bbc' a powinna być wartość nil ;p tzn tak mi się wydaje. Nie pisałem wcześniej w delphi więc mogłem zrobić tu jakiś głupi błąd. Dopiski ShowMessage('dodalem do prawego'); są tylko po to aby sprawwdzić gdzie funkcja się wykonuje. Z góry dzieki za pomoc.