我是一个OCaml用户,我有一个类型:
type 'a bt = Empty | Node of 'a * 'a bt * 'a bt;;
此外,我有一个二叉搜索树的示例:
let tree = Node(1,Node(2,Node(4,Empty,Empty),Empty),Node(3,Node(5,Empty,Node(6,Empty,Empty)),Empty));
我需要编写一个函数:breadthBT:'a bt -> 'a list
,它将是广度优先搜索遍历。对于上述示例树,它应返回[1; 2; 3; 4; 5; 6]
如何编写该函数?我只能编写以下使用DST的函数:
let rec breadthBT tree =
if tree=Empty then []
else let Node(w,l,r)=tree in (w::breadthBT l)@breadthBT r;;
上述函数返回的是(例如树)[1; 2; 4; 3; 5; 6]。但我无法编写使用BFS的函数。你能帮我吗?