我正在尝试在 Go 中实现一棵树。
type BinaryNode struct {
left *BinaryNode
right *BinaryNode
data int
}
type BinaryTree struct {
root *BinaryNode
}
现在要插入元素,我有一个插入函数,
func (t *BinaryNode) insertNode(d int) {
fmt.Printf("%+v\n", t)
if t == nil {
t = &BinaryNode{
data: d,
left: nil,
right: nil,
}
fmt.Printf("%+v inside insert\n", t)
} else {
if d <= t.data {
t.left.insertNode(d)
} else {
t.right.insertNode(d)
}
}
}
如果指针为 nil,则根据数据创建一个新节点(如果不是,则查找左侧或右侧)。在我的主要功能中,我正在尝试简单的几个步骤:
func main() {
tree1 := &BinaryTree{
root: nil,
}
tree1.root.insertNode(3)
fmt.Printf("%+v\n", tree1.root)
}
我期望看到的是根值为3的树。但我没有看到任何东西。相反,我得到:
<nil>
&{left:<nil> right:<nil> data:3} inside insert
<nil>
据我所知,如果结构指针用于方法,则不会进行复制。在这种情况下,修改应保持不变。
我在这里错过了什么?
慕妹3242003
相关分类