我正在构建一个大小为7和高度为3的二叉搜索树。我只需要对其进行硬编码,而不是通过函数生成它。
这是我硬编码的树
Node (Node (Node (Empty, 0, Empty), 1,
Node (Empty, 3, Empty)), 5
Node (Empty, 7, Node (8, 9, Empty))))
我想要的是节点9有两个孩子(8和空)。但是,我继续在8上得到一个错误,上面写着“这个表达式有int类型但是表达式是int type tree”。我怎么能纠正这个?
谢谢!
答案 0 :(得分:3)
你不能为叶子写8
。你必须写Node (Empty, 8, Empty)
。
type tree = Empty | Node of tree * int * tree
(* the tree
5
/ \
/ \
1 7
/ \ \
0 3 9
/
8
*)
let t =
Node (
Node (Node (Empty, 0, Empty),
1,
Node (Empty, 3, Empty)),
5,
Node (
Empty,
7,
Node (Node (Empty, 8, Empty),
9,
Empty)
)
)
(* With an auxliary function we can do this to get the same tree: *)
let leaf k = Node (Empty, k, Empty)
let t' =
Node (
Node (leaf 0, 1, leaf 3),
5,
Node (Empty, 7, Node (leaf 8, 9, Empty)))
答案 1 :(得分:2)
Node的第一个元素必须是树,而不是int
。
因此,您不能将8放在预期树的位置。或许,您的意思是Node (Empty, 8 Empty)
而不是8
。