Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.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
Tree 向树中添加节点_Tree_Go - Fatal编程技术网

Tree 向树中添加节点

Tree 向树中添加节点,tree,go,Tree,Go,我正在用Go编程语言进行一个项目,我需要一个树结构,并能够向树中添加节点(很多节点)。每个节点都是一个结构,如下所示: type Node struct { ip net.IP nodes []Node value int } 每个节点可以拥有的节点数是可变的(在1-4之间)。IP地址(我将稍后搜索)可以包含在节点中,但对于该元素,大多数节点将为零 我可以在其他语言中轻松做到这一点,但我需要找到一种有效的方法,将这些节点添加到Go中的树中 例如,使用节点作为指向节点的指

我正在用Go编程语言进行一个项目,我需要一个树结构,并能够向树中添加节点(很多节点)。每个节点都是一个结构,如下所示:

type Node struct {
    ip net.IP
    nodes []Node
    value int
}
每个节点可以拥有的节点数是可变的(在1-4之间)。IP地址(我将稍后搜索)可以包含在节点中,但对于该元素,大多数节点将为零


我可以在其他语言中轻松做到这一点,但我需要找到一种有效的方法,将这些节点添加到Go中的树中

例如,使用
节点
作为指向
节点
的指针片

package main

import (
    "fmt"
    "net"
)

type Node struct {
    value int
    ip    net.IP
    nodes []*Node
}

func main() {
    node1 := Node{value: 1}
    node2 := Node{value: 2}
    node3 := Node{value: 3}
    node4 := Node{value: 4}
    node1.nodes = append(node1.nodes, &node2, &node3)
    node2.nodes = append(node2.nodes, &node4)
    node3.nodes = append(node3.nodes, &node4)
    fmt.Printf("node1: %p %v\n", &node1, node1)
    fmt.Printf("node2: %p %v\n", &node2, node2)
    fmt.Printf("node3: %p %v\n", &node3, node3)
    fmt.Printf("node4: %p %v\n", &node4, node4)
}
输出:

node1: 0xc200069100 {1 [] [0xc200069180 0xc200069200]}
node2: 0xc200069180 {2 [] [0xc200069240]}
node3: 0xc200069200 {3 [] [0xc200069240]}
node4: 0xc200069240 {4 [] []}


什么样的树?你需要在哪里最有效率;插入、访问、删除?效率对插入最为重要。树的类型不是很重要,我只需要保留上面提到的结构。你会用其他语言做什么?有什么不同?我真的不明白你的问题。