我是 Golang 的初學(xué)者,正在嘗試構(gòu)建二叉搜索樹。我的源代碼來做到這一點(diǎn):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()}結(jié)果顯示一棵空樹。我的代碼有什么問題?Golang 有按值傳遞或按引用傳遞嗎?請幫我解決這個(gè)問題。
1 回答

吃雞游戲
TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
Go 總是按值傳遞參數(shù)。你應(yīng)該寫:
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])
}
查看結(jié)果:http : //play.golang.org/p/94H_l3rfSH
- 1 回答
- 0 關(guān)注
- 188 瀏覽
添加回答
舉報(bào)
0/150
提交
取消