Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
F# 编写一个函数从列表中构建树_F# - Fatal编程技术网

F# 编写一个函数从列表中构建树

F# 编写一个函数从列表中构建树,f#,F#,如何编写函数从F#中的列表构建树 如果从左到右读取树的标签进行写入,则它们的顺序应与原始列表的顺序相同。以下是一些开始的提示。根据您对树的定义: type Tree = | Leaf of int | Node of (Tree * Tree) 您希望定义一个函数,该函数从整数列表构造一个树值。将问题分解为更小的部分是一种很好的做法,因此,您可以从一个简单的函数开始添加单个元素,而不是直接定义fromList函数。要做到这一点,您只需考虑两种情况,即两种可能的树形状,因此已

如何编写函数从F#中的列表构建树


如果从左到右读取树的标签进行写入,则它们的顺序应与原始列表的顺序相同。

以下是一些开始的提示。根据您对
树的定义

type Tree = 
    | Leaf of int
    | Node of (Tree * Tree) 
您希望定义一个函数,该函数从整数列表构造一个
值。将问题分解为更小的部分是一种很好的做法,因此,您可以从一个简单的函数开始添加单个元素,而不是直接定义fromList函数。要做到这一点,您只需考虑两种情况,即两种可能的树形状,因此已经给出了这样的函数的存根:

let addInt n tree =
    match tree with
    | Leaf x        -> ??
    | Node (t1,t2)  -> ??
一旦你找到了一个合理的定义,你就可以继续思考如何定义对列表进行操作的函数,并重用
addInt
。这一次,您需要匹配列表的基本情况:

let rec addMany xs tree =
    match xs with
    | []        -> ??
    | x :: xs   -> ??

一旦您习惯使用显式递归解决此类问题,您可以查看
列表。折叠
以简化您的解决方案。

树的标签是什么?如果你只想保持列表的顺序,为什么你需要一个树状结构?真的吗?在不到两天的时间里问同样的问题?
let rec addMany xs tree =
    match xs with
    | []        -> ??
    | x :: xs   -> ??