OCaml 二叉树镜像
OCaml Binary Tree Mirror Image
我正在为 class 学习 OCaml,并被分配计算二叉树的镜像。我被困住了,甚至不知道如何开始...
type btree = Empty | Node of int * btree * btree
;;
let mirror : btree -> btree
= fun t -> (* Code *)
示例输入:
let tree1 = Node(1, Node(2, Node(3, Empty, Empty), Empty), Node(4, Empty, Empty))
;;
示例输出:
mirror tree1 = Node(1, Node(4, Empty, Empty), Node(2, Empty, Node(3, Empty, Empty)))
;;
使用 match
功能。
您可以 match
按其类型定义的值结构。在您的示例中,btree
类型的值是使用 Empty
构造函数或 Node of int * btree * btree
的元组构造函数创建的。你应该得到这样的结果:
...
match t with
| Node (num, lt, rt) -> (* do something to switch the subtrees, and mirror the subtrees themselves *)
| Empty -> (* do nothing *)
...
并且由于 mirror
函数是 btree -> btree
类型,您的每个匹配案例都必须 return 一个 btree
.
类型的有效值
参见:http://ocaml.org/learn/tutorials/data_types_and_matching.html#Pattern-matching-on-datatypes
我正在为 class 学习 OCaml,并被分配计算二叉树的镜像。我被困住了,甚至不知道如何开始...
type btree = Empty | Node of int * btree * btree
;;
let mirror : btree -> btree
= fun t -> (* Code *)
示例输入:
let tree1 = Node(1, Node(2, Node(3, Empty, Empty), Empty), Node(4, Empty, Empty))
;;
示例输出:
mirror tree1 = Node(1, Node(4, Empty, Empty), Node(2, Empty, Node(3, Empty, Empty)))
;;
使用 match
功能。
您可以 match
按其类型定义的值结构。在您的示例中,btree
类型的值是使用 Empty
构造函数或 Node of int * btree * btree
的元组构造函数创建的。你应该得到这样的结果:
...
match t with
| Node (num, lt, rt) -> (* do something to switch the subtrees, and mirror the subtrees themselves *)
| Empty -> (* do nothing *)
...
并且由于 mirror
函数是 btree -> btree
类型,您的每个匹配案例都必须 return 一个 btree
.
参见:http://ocaml.org/learn/tutorials/data_types_and_matching.html#Pattern-matching-on-datatypes