1 回答
TA贡献1900条经验 获得超5个赞
让我们一步一步来。
它使用指针,因为 left 和/或 right 可以是 nil (根本没有设置),你不能有一个值。此外,如果他们使用,
left, right node
您将拥有无限数量的节点,因为该值将始终被设置。visit func(int)
允许您传递类型为 的函数func(int)
,例如其他语言中的回调。n.left.iterPreorder
/n.right.iterPreorder
,您实际上是在调用iterPreorder
子节点,而不是调用它的同一个节点。该代码只是创建一棵树并为其分配节点。
为了更好地可视化:
tree := &node{1,
&node{2,
&node{4,
&node{7, nil, nil},
nil},
&node{5, nil, nil}},
&node{3,
&node{6,
&node{8, nil, nil},
&node{9, nil, nil}},
nil}}
是相同的:
tree = &node{value: 1}
tree.left = &node{value:2}
tree.left.left = &node{value: 4}
tree.left.left.left = &node{value: 7}
tree.left.right = &node{value: 5}
tree.right = &node{value:3}
tree.right.left = &node{value: 6}
tree.right.left.left = &node{value: 8}
tree.right.left.right = &node{value: 9}
奖金:
使用&返回一个指针,例如n := &node{},n是一个指向节点的指针。
检查此有关围棋的指针优秀文章。
也必须阅读Effective Go,并尝试通过游览
- 1 回答
- 0 关注
- 176 浏览
添加回答
举报