tree - 向树中添加节点

标签 tree go

我正在使用 Go 编程语言开发一个项目,我需要一个树结构以及向树中添加节点(很多节点)的能力。每个节点都是如下结构:

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

每个节点可以拥有的节点数是可变的(在 1-4 之间)。节点中可以包含一个 IP 地址(稍后我会搜索),但对于该元素,大多数节点将为 nil。

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

最佳答案

例如,将 nodes 作为指向 Node 的指针 slice ,

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 [] []}

Slice types

Appending to and copying slices

SliceTricks

Pointer types

关于tree - 向树中添加节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13663703/

相关文章:

C# 使用不同的 "processors"蝇量模式处理同一对象?

json - 将特定的 JSON 字段写入文件

go - 如何应对这种进口周期?

Go - 如何组合多个错误对象

python - Python 2.7 中与或树的存储格式

php - 使用 php 递归构建类别树

c - 搜索子树以找到许多特征

java - ADT 树 - 是节点的祖先/后代吗?

mongodb - 如何在 Golang 的 mgo 查询中运行 $and 运算符

arrays - 声明一个常量数组