hi there i have a problem :
so i have two tree structures New (has value 77 in left upper corner) and BinTree (is the large tree) are declared as standard tree
Delphi-Quellcode:
type TBinTree=class
Value:integer;
Left,Right: TBinTree;
constructor Create(New_Value:integer; New_Left, New_Right:TBinTree); Overload;
constructor PowerCreate(Node:TBinTree); Overload;
...
end;
constructor TBinTree.Create(New_Value:integer; New_Left, New_Right:TBinTree);
begin
Value:=New_Value;
Left:=New_Left;
Right:=New_Right;
end;
constructor TBinTree.PowerCreate(Node:TBinTree);
begin
Self:=Node;
end;
und ich mochte jetzt den ganzen rechten teil (.Right) von BinTree Baum mit Value=1 in den rechten teil von New baum tree stecken (2)) und dann diesen grossen New in den rechten teil (.Right) von BinTree mit Value=1 stecken, alzo eine neue node mit value=77 zwichen value=1 und value=2 erstelen, und dann will ich aber frei mit dem New tree arbeiten (wenn ich zumbeispiel New andere, mochte ich net das auch die node in BinTree geendert wird), weiss aber nich wie ich es machen soll sodas ich nicht die adresse von New in := aber eine neue node erstelle
Delphi-Quellcode:
procedure TEngine.Insert;
var X:TBinTree;
begin
X:=TBinTree.PowerCreate(NewNode);
X.Right:=TBinTree.PowerCreate(BinTree.IsOverParentLine(Selected).Right); //BinTree.IsOverParentLine(Selected)=> Value=1
BinTree.IsOverParentLine(Selected).Right:=TBinTree.PowerCreate(X); //ako precerpat celu nodu aj s pamatov
end;
das geht aber nich denn immer bleibt die New node mit der node in BinTree verbunden
http://www.kolaudacia.sk/bintree.gif