你能幫忙搜索功能嗎,它總是返回零,我不明白為什么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") }}搜索了互聯(lián)網(wǎng)并通過方法找到了很多,但我需要作為功能。我是編程的初學者,所以我很難理解PlayGoundLink
2 回答

白衣非少年
TA貢獻1155條經(jīng)驗 獲得超0個贊
好的,https://play.golang.org/p/gQmdYLfAvIY此代碼有效,BTreeInsertData
忘記添加Parant
并且BTreeSearchItem
我不匹配Right
并且Left

一只甜甜圈
TA貢獻1836條經(jīng)驗 獲得超5個贊
我的建議是在調(diào)用函數(shù)之前檢查root
in的值。我懷疑價值觀本身已經(jīng)處于那個階段。main()
BTreeSearchItem
root
nil
- 2 回答
- 0 關(guān)注
- 173 瀏覽
添加回答
舉報
0/150
提交
取消