欢迎访问宙启技术站
智能推送

golang中怎么生成一个tree

发布时间:2023-05-16 12:04:14

在golang中生成一个树可以使用指针和结构体来完成。下面是一个简单的示例:

定义结构体:

type Node struct {
    Val   int
    Left  *Node
    Right *Node
}

使用递归来生成树:

func generateTree(start, end int) []*Node {
    if start > end {
        return []*Node{nil}
    }

    var res []*Node
    for i := start; i <= end; i++ {
        left := generateTree(start, i-1)
        right := generateTree(i+1, end)

        for _, l := range left {
            for _, r := range right {
                root := &Node{Val: i}
                root.Left = l
                root.Right = r
                res = append(res, root)
            }
        }
    }

    return res
}

这个函数生成的是从1到n的不同二叉搜索树,其中n是输入的参数。返回一个切片,其中包含了所有可能的根节点。