我正在Go中實現二叉搜索樹。到目前為止,我設法實現了以下功能:搜索插入按遍歷順序我唯一沒有成功實現的功能是刪除功能。當要刪除的節點是葉時,它不會被刪除。當我嘗試刪除包含值8的節點時,我期望以下輸出:{10 <nil> 0xc00009a060}{12 <nil> <nil>}{15 0xc00009a018 0xc00009a030}{18 <nil> <nil>}{20 0xc00009a078 0xc00009a090}{25 <nil> <nil>}但是,我得到以下輸出:{8 <nil> <nil>}{10 0xc00009a048 0xc00009a060}{12 <nil> <nil>}{15 0xc00009a018 0xc00009a030}{18 <nil> <nil>}{20 0xc00009a078 0xc00009a090}{25 <nil> <nil>}你可以在這里找到我的源代碼:https://play.golang.org/p/oaCYEgCt-qI
1 回答
慕勒3428872
TA貢獻1848條經驗 獲得超6個贊
if value < tree.data {
*parent = *tree
tree = tree.left
} else if value > tree.data {
*parent = *tree
tree = tree.right
}
在本節中,將獲取節點的副本。稍后,您將使用哪個修改副本(而不是從樹中的上方鏈接的節點)。因此,更改為解決問題(游樂場)。請注意,您還需要考慮如果找到的節點位于樹的頂部,應該發生什么(我還沒有解決這種情況)。*parent = *treeparent.right = nil*parent = *treeparent = tree
添加回答
舉報
0/150
提交
取消
