f#上二叉树的预遍历

时间:2018-09-07 20:56:17

标签: function f# functional-programming pattern-matching binary-tree

我正在编写一个函数,该函数接受一棵树t1并返回一个字符串,其中所有数字都存储在t1中(preoder遍历),并用空格分隔。

例如:

convertToStr( Node (Node (Node (Empty, 6, Empty), 2, Empty), 
5, Node (Empty, 0, Node (Empty, 1, Empty))) )

会给我

“ 5 2 6 0 1”

let rec convertToStr t1 =
 match t1 with
  | Node(E, v, E) -> String(v)
  | Node(E, v, w) -> converToStr(w)
  | Node(u, v, E) -> convertToStr(u)
  | Node(u, v, w) -> String(v) + convertToStr(u) + convertToStr(w)

我仍然没有得到想要的输出。我在打印正确的子树时遇到问题。感谢您的帮助

1 个答案:

答案 0 :(得分:2)

您的第二和第三种情况无法打印v。最直接的解决方法是对此进行补救。