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

BST golang 搜索功能

BST golang 搜索功能

Go
BIG阳 2022-06-01 16:06:11
你能帮忙搜索功能吗,它总是返回零,我不明白为什么func BTreeSearchItem(root *TreeNode, elem string) *TreeNode {    if root == nil {        return nil    }    if root.Data < elem {        return BTreeSearchItem(root.Left, elem)    } else if root.Data > elem {        return BTreeSearchItem(root.Right, elem)    }    return root}试图这样做,但它返回 4 而不是 7func BTreeSearchItem(root *TreeNode, elem string) *TreeNode {    if root == nil {        return nil    }    if root.Data < elem {        BTreeSearchItem(root.Left, elem)    } else if root.Data > elem {        BTreeSearchItem(root.Right, elem)    }    return root}完整代码是package mainimport "fmt"type TreeNode struct {    Left, Right, Parent *TreeNode    Data                string}func BTreeSearchItem(root *TreeNode, elem string) *TreeNode {    if root == nil {        return nil    }    if root.Data < elem {        BTreeSearchItem(root.Left, elem)    } else if root.Data > elem {        BTreeSearchItem(root.Right, elem)    }    return root}func BTreeInsertData(root *TreeNode, data string) *TreeNode {    if root == nil {        return &TreeNode{Data: data}    }    if root.Data == data {        return nil    }    if root.Data > data {        if root.Left == nil {            root.Left = &TreeNode{Data: data}        }        return BTreeInsertData(root.Left, data)    }    if root.Data < data {        if root.Right == nil {            root.Right = &TreeNode{Data: data}        }        return BTreeInsertData(root.Right, data)    }    return root}func main() {    root := &TreeNode{Data: "4"}    BTreeInsertData(root, "1")    BTreeInsertData(root, "7")    BTreeInsertData(root, "5")    selected := BTreeSearchItem(root, "7")    fmt.Print("Item selected -> ")    if selected != nil {        fmt.Println(selected.Data)    } else {        fmt.Println("nil")    }    fmt.Print("Parent of selected item -> ")    if selected.Parent != nil {        fmt.Println(selected.Parent.Data)    } else {        fmt.Println("nil")    }}搜索了互联网并通过方法找到了很多,但我需要作为功能。我是编程的初学者,所以我很难理解PlayGoundLink
查看完整描述

2 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

好的,https://play.golang.org/p/gQmdYLfAvIY此代码有效,BTreeInsertData忘记添加Parant并且BTreeSearchItem我不匹配Right并且Left



查看完整回答
反对 回复 2022-06-01
?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

我的建议是在调用函数之前检查rootin的值。我怀疑价值观本身已经处于那个阶段。main()BTreeSearchItemrootnil



查看完整回答
反对 回复 2022-06-01
  • 2 回答
  • 0 关注
  • 150 浏览
慕课专栏
更多

添加回答

举报

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