binarytree.pl
来自「PRl教学程序 PRl教学程序 PRl教学程序」· PL 代码 · 共 52 行
PL
52 行
/********************************************************************
Constraint-based Graphical Programming in B-Prolog
%
draw a binary tree
*********************************************************************/
go:-
binaryTree(Os),
cgJava(binaryTree,Os).
binaryTree([Root|Os]):-
createNode(Root),
binaryTree(4,Root,Os).
createNode(Root):-
cgCircle(Root),
Root^width #= 20,
Root^color #= red.
binaryTree(N,Root,Os):-N=:=0,!,Os=[].
binaryTree(N,Root,Os):-
Os=[C1,C2,L1,L2|Os12],
createNode(C1),
createNode(C2),
cgLine(L1),
cgLine(L2),
connect(Root,C1,C2,L1,L2),
N1 is N-1,
binaryTree(N1,C1,Os1),
binaryTree(N1,C2,Os2),
cgLeft(Os1,Os2),
append(Os1,Os2,Os12).
connect(Root,C1,C2,L1,L2):-
Root^centerX #= (C1^centerX+C2^centerX)//2,
cgLeft(C1,C2),
Root^centerY #= C1^centerY-50,
C1^centerY #= C2^centerY,
connect(L1,Root,C1),
connect(L2,Root,C2).
connect(L,N1,N2):-
L^point1 #= N1^centerPoint,
L^point2 #= N2^centerPoint.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?