バイナリツリーを作成するためのコードと再帰的な出力があります。どのようにバイナリツリーをスレッドツリーに変換し、それを繰り返し印刷するのですか?ツリーをスレッドバイナリツリーに変換する方法
type
PAvl = ^TAvl;
TAvl = record
key: integer;
left: PAvl;
right: PAvl;
isThreaded: boolean;
end;
procedure create(var root: PAvl; digit: integer);
begin
if root = nil then begin
New(root);
root^.key := digit;
root^.left := nil;
root^.right := nil;
end
else if root.key > digit then
create(root.left, digit)
else
create(root.right, digit);
end;
procedure Print(root: PNode; depth: integer = 0);
var
i: integer;
begin
if root <> nil then
begin
Print(root^.right, depth + 1);
for i:=1 to depth do
Write(#9);
Writeln(root^.data);
Print(root^.left, depth + 1);
end;
end;
ウィキペディアはかなり良い説明:https://en.wikipedia.org/wiki/Threaded_binary_treeを持って – Johan
コードは2つのソースからの本当の、単なる混合物ではありません。 – MBo