为了账号安全,请及时绑定邮箱和手机立即绑定

Golang 二叉搜索树算法翻译

Golang 二叉搜索树算法翻译

Go
回首忆惘然 2021-11-08 18:51:57
我是 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


查看完整回答
反对 回复 2021-11-08
  • 1 回答
  • 0 关注
  • 156 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信