小编wit*_*yyy的帖子

F#将列表转换为树

我有一个元组列表int*string其中int是level,string是name

let src = [
        (0, "root");
            (1, "a");
                (2, "a1");
                (2, "a2");
            (1, "b");
                (2, "b1");
                    (3, "b11");
                (2, "b2");
        ]
Run Code Online (Sandbox Code Playgroud)

我需要将其转换为以下内容

let expectingTree = 
    Branch("root", 
    [
        Branch("a",
            [
                Leaf("a1");
                Leaf("a2")
            ]);
        Branch("b",
            [
                Branch("b1", [Leaf("b11")]);
                Leaf("b2")
            ]);
    ]);
Run Code Online (Sandbox Code Playgroud)

以下是我如何做到的方式,但任何人都可以通过更好的方式来实现这一目标.我是F#的新手,做同样事情的C#代码会更短,所以我想我错了.

type Node = 
    | Branch of (string * Node list)
    | Leaf of string

let src = [
            (0, "root");
                (1, "a");
                    (2, "a1");
                    (2, "a2");
                (1, "b");
                    (2, "b1");
                        (3, "b11");
                    (2, "b2");
            ]

let rec setParents (level:int) …
Run Code Online (Sandbox Code Playgroud)

algorithm tree recursion f#

6
推荐指数
1
解决办法
1207
查看次数

标签 统计

algorithm ×1

f# ×1

recursion ×1

tree ×1