demo_pascal_trees.htm
来自「Delphi脚本控件」· HTM 代码 · 共 121 行
HTM
121 行
<html>
<head>
<link rel=stylesheet type="text/css" href="styles.css">
</head>
<body>
<h3>
LISPPA: Binary trees (paxPascal).
</h3>
<hr>
<blockquote>
<pre>
<font color="blue"><b>program</b></font> BinaryTrees;
<font color="blue"><b>const</b></font>
Key = 0;
Left = 1;
Right = 2;
<font color="blue"><b>procedure</b></font> AddNode(<font color="blue"><b>const</b></font> Root, X: Variant);
<font color="blue"><b>begin</b></font>
<font color="blue"><b>if</b></font> Root = <font color="blue"><b>nil</b></font> <font color="blue"><b>then</b></font>
Root := [X, <font color="blue"><b>nil</b></font>, <font color="blue"><b>nil</b></font>]
<font color="blue"><b>else</b></font> <font color="blue"><b>if</b></font> X < Root[Key] <font color="blue"><b>then</b></font>
AddNode(@Root[Left], X)
<font color="blue"><b>else</b></font> <font color="blue"><b>if</b></font> X > Root[Key] <font color="blue"><b>then</b></font>
AddNode(@Root[Right], X);
<font color="blue"><b>end</b></font>;
<font color="blue"><b>function</b></font> Search(<font color="blue"><b>const</b></font> Root, X: Variant);
<font color="blue"><b>begin</b></font>
<font color="blue"><b>if</b></font> Root = <font color="blue"><b>nil</b></font> <font color="blue"><b>then</b></font>
result := <font color="blue"><b>nil</b></font>
<font color="blue"><b>else</b></font> <font color="blue"><b>if</b></font> X = Root[Key] <font color="blue"><b>then</b></font>
result := Root
<font color="blue"><b>else</b></font> <font color="blue"><b>if</b></font> X < Root[Key] <font color="blue"><b>then</b></font>
result := Search(Root[Left], X)
<font color="blue"><b>else</b></font>
result := Search(Root[Right], X);
<font color="blue"><b>end</b></font>;
<font color="blue"><b>procedure</b></font> DeleteNode(Root, X: Variant);
<font color="blue"><b>var</b></font>
P, R: Variant;
<font color="blue"><b>begin</b></font>
R := Search(Root, X);
<font color="blue"><b>if</b></font> R = <font color="blue"><b>nil</b></font> <font color="blue"><b>then</b></font> <font color="blue"><b>Exit</b></font>;
<font color="blue"><b>if</b></font> (R[Left] = <font color="blue"><b>nil</b></font>) <font color="blue"><b>and</b></font> (R[Right] = <font color="blue"><b>nil</b></font>) <font color="blue"><b>then</b></font>
<font color="blue"><b>reduced</b></font> R := <font color="blue"><b>nil</b></font>
<font color="blue"><b>else</b></font> <font color="blue"><b>if</b></font> R[Left] = <font color="blue"><b>nil</b></font> <font color="blue"><b>then</b></font>
<font color="blue"><b>reduced</b></font> R := R[Right]
<font color="blue"><b>else</b></font> <font color="blue"><b>if</b></font> R[Right] = <font color="blue"><b>nil</b></font> <font color="blue"><b>then</b></font>
<font color="blue"><b>reduced</b></font> R := R[Left]
<font color="blue"><b>else</b></font>
<font color="blue"><b>begin</b></font>
P := @ R[Left];
<font color="blue"><b>while</b></font> P[Right] <> <font color="blue"><b>nil</b></font> <font color="blue"><b>do</b></font> P := @ P[Right];
R[Key] := P[Key];
<font color="blue"><b>reduced</b></font> P := P[Left];
<font color="blue"><b>end</b></font>;
<font color="blue"><b>end</b></font>;
<font color="blue"><b>procedure</b></font> PreOrder(<font color="blue"><b>const</b></font> Root: Variant);
<font color="blue"><b>begin</b></font>
<font color="blue"><b>if</b></font> Root = <font color="blue"><b>nil</b></font> <font color="blue"><b>then</b></font> <font color="blue"><b>Exit</b></font>;
writeln(Root[Key]);
PreOrder(Root[Left]);
PreOrder(Root[Right]);
<font color="blue"><b>end</b></font>;
<font color="blue"><b>procedure</b></font> InOrder(<font color="blue"><b>const</b></font> Root: Variant);
<font color="blue"><b>begin</b></font>
<font color="blue"><b>if</b></font> Root = <font color="blue"><b>nil</b></font> <font color="blue"><b>then</b></font> <font color="blue"><b>Exit</b></font>;
InOrder(Root[Left]);
writeln(Root[Key]);
InOrder(Root[Right]);
<font color="blue"><b>end</b></font>;
<font color="blue"><b>procedure</b></font> PostOrder(<font color="blue"><b>const</b></font> Root: Variant);
<font color="blue"><b>begin</b></font>
<font color="blue"><b>if</b></font> Root = <font color="blue"><b>nil</b></font> <font color="blue"><b>then</b></font> <font color="blue"><b>Exit</b></font>;
PostOrder(Root[Right]);
PostOrder(Root[Left]);
writeln(Root[Key]);
<font color="blue"><b>end</b></font>;
<font color="blue"><b>var</b></font>
Tree, X: Variant;
<font color="blue"><b>begin</b></font>
AddNode(@Tree, 10);
AddNode(@Tree, 5);
AddNode(@Tree, 15);
AddNode(@Tree, 3);
AddNode(@Tree, 8);
AddNode(@Tree, 13);
AddNode(@Tree, 18);
writeln(Tree);
InOrder(Tree);
X := Search(Tree, 5);
writeln(X);
DeleteNode(@Tree, 10);
writeln(Tree);
<font color="blue"><b>end</b></font>.
</pre>
</blockquote>
<p>
<HR>
<font size = 1 color ="gray">
Copyright © 1999-2005
VIRT Laboratory. All rights reserved.
</font>
</body>
</html>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?