我是 Golang 的初学者,正在尝试构建二叉搜索树。我的源代码来做到这一点:package mainimport ( "fmt" "math/rand" "time")type Node struct{ value int left *Node right *Node}func insert(root *Node,v int){ if root==nil{ root=&Node{v,nil,nil} } else if v<root.value{ insert(root.left,v) } else{ insert(root.right,v) }}func inTraverse(root *Node){ if (root==nil){ return } inTraverse(root.left) fmt.Printf("%d",root.value) inTraverse(root.right)}func main() { var treeRoot *Node rand.Seed(time.Now().UnixNano()) n:=6 var a[6]int for i:=0;i<n;i++{ a[i]=rand.Intn(20)+1 } fmt.Println("Array of integer: ") for i:=0;i<n;i++{ fmt.Printf("%d ",a[i]) } fmt.Println() for i:=0;i<n;i++{ insert(treeRoot,a[i]) } inTraverse(treeRoot) fmt.Println()}结果显示一棵空树。我的代码有什么问题?Golang 有按值传递或按引用传递吗?请帮我解决这个问题。
1 回答
吃鸡游戏
TA贡献1829条经验 获得超7个赞
Go 总是按值传递参数。你应该写:
func insert(root *Node,v int) *Node {
if root == nil{
root = &Node{v,nil,nil}
} else if v<root.value{
root.left = insert(root.left,v)
} else{
root.right = insert(root.right,v)
}
return root
}
和:
for i:=0;i<n;i++{
treeRoot = insert(treeRoot,a[i])
}
查看结果:http : //play.golang.org/p/94H_l3rfSH
- 1 回答
- 0 关注
- 156 浏览
添加回答
举报
0/150
提交
取消