31 lines
813 B
Plaintext
31 lines
813 B
Plaintext
procedure main()
|
|
aTree := [1, [2, [4, [7]], [5]], [3, [6, [8], [9]]]]
|
|
bTree := [1, [2, [4, [7]], [5]], [3, [6, [8], [9]]]]
|
|
write("aTree and bTree ",(sameFringe(aTree,bTree),"have")|"don't have",
|
|
" the same leaves.")
|
|
cTree := [1, [2, [4, [7]], [5]], [3, [6, [8]]]]
|
|
dTree := [1, [2, [4, [7]], [5]], [3, [6, [8], [9]]]]
|
|
write("cTree and dTree ",(sameFringe(cTree,dTree),"have")|"don't have",
|
|
" the same leaves.")
|
|
end
|
|
|
|
procedure sameFringe(a,b)
|
|
return same{genLeaves(a),genLeaves(b)}
|
|
end
|
|
|
|
procedure same(L)
|
|
while n1 := @L[1] do {
|
|
n2 := @L[2] | fail
|
|
if n1 ~== n2 then fail
|
|
}
|
|
return not @L[2]
|
|
end
|
|
|
|
procedure genLeaves(t)
|
|
suspend (*(node := preorder(t)) == 1, node[1])
|
|
end
|
|
|
|
procedure preorder(L)
|
|
if \L then suspend L | preorder(L[2|3])
|
|
end
|