package main
import (
"fmt"
)
type Node struct {
Id uint
Pid uint
Name string
Value string
Children []Node
}
func Tree(node []Node, pid uint) []Node {
res := make([]Node, 0)
for _, v := range node {
if v.Pid == pid {
v.Children = Tree(node, v.Id)
res = append(res, v)
}
}
return res
}
func main() {
node := []Node{
{
Id: 1,
Pid: 0,
Name: "root",
Value: "1",
},
{
Id: 2,
Pid: 1,
Name: "root",
Value: "1",
},
{
Id: 3,
Pid: 2,
Name: "root",
Value: "1",
},
{
Id: 4,
Pid: 2,
Name: "root",
Value: "1",
},
{
Id: 5,
Pid: 1,
Name: "root",
Value: "1",
},
}
nodes := Tree(node, 0)
fmt.Printf("%+v", nodes)
}