Jump to content

Tree traversal: Difference between revisions

PascalABC.NET
(PascalABC.NET)
 
Line 8,694:
{Show {Postorder Tree}}
{Show {Levelorder Tree}}</syntaxhighlight>
 
=={{header|PascalABC.NET}}==
<syntaxhighlight lang="delphi">
type
Node<T> = auto class
data: T;
left,right: Node<T>;
end;
function ND<T>(data: T; left: Node<T> := nil; right: Node<T> := nil)
:= new Node<T>(data,left,right);
 
procedure Prefix<T>(r: Node<T>);
begin
if r = nil then
exit;
Print(r.data);
Prefix(r.left);
Prefix(r.right);
end;
 
procedure Infix<T>(r: Node<T>);
begin
if r = nil then
exit;
Infix(r.left);
Print(r.data);
Infix(r.right);
end;
 
procedure Postfix<T>(r: Node<T>);
begin
if r = nil then
exit;
Postfix(r.left);
Postfix(r.right);
Print(r.data);
end;
 
procedure LevelOrder<T>(r: Node<T>);
begin
if r = nil then
exit;
var q := new Queue<Node<T>>;
q.Enqueue(r);
while q.Count > 0 do
begin
var x := q.Dequeue;
Print(x.data);
if x.left <> nil then
q.Enqueue(x.Left);
if x.Right <> nil then
q.Enqueue(x.Right);
end;
end;
 
begin
var root := ND(1,ND(2,ND(4,ND(7)),ND(5)),ND(3,ND(6,ND(8),ND(9))));
Println(root);
Prefix(root); Println;
Infix(root); Println;
Postfix(root); Println;
LevelOrder(root); Println;
end.
</syntaxhighlight>
{{out}}
<pre>
(1,(2,(4,(7,nil,nil),nil),(5,nil,nil)),(3,(6,(8,nil,nil),(9,nil,nil)),nil))
1 2 4 7 5 3 6 8 9
7 4 2 5 1 8 6 9 3
7 4 5 2 8 9 6 3 1
1 2 3 4 5 6 7 8 9
 
</pre>
 
=={{header|Perl}}==
256

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.