猿问

Golang 二叉搜索树算法翻译

我是 Golang 的初学者,正在尝试构建二叉搜索树。我的源代码来做到这一点:


package main


import (

    "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 有按值传递或按引用传递吗?请帮我解决这个问题。


回首忆惘然
浏览 157回答 1
1回答

吃鸡游戏

Go 总是按值传递参数。你应该写:func insert(root *Node,v int) *Node {&nbsp; &nbsp; if root == nil{&nbsp; &nbsp; &nbsp; &nbsp; root = &Node{v,nil,nil}&nbsp; &nbsp; } else if v<root.value{&nbsp; &nbsp; &nbsp; &nbsp; root.left = insert(root.left,v)&nbsp; &nbsp; } else{&nbsp; &nbsp; &nbsp; &nbsp; root.right = insert(root.right,v)&nbsp; &nbsp; }&nbsp; &nbsp; return root}和:for i:=0;i<n;i++{&nbsp; &nbsp; treeRoot = insert(treeRoot,a[i])}查看结果:http : //play.golang.org/p/94H_l3rfSH
随时随地看视频慕课网APP

相关分类

Go
我要回答