我正在Go中實現(xiàn)二叉搜索樹。到目前為止,我設(shè)法實現(xiàn)了以下功能:搜索插入按遍歷順序我唯一沒有成功實現(xiàn)的功能是刪除功能。當(dāng)要刪除的節(jié)點是葉時,它不會被刪除。當(dāng)我嘗試刪除包含值8的節(jié)點時,我期望以下輸出:{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貢獻(xiàn)1848條經(jīng)驗 獲得超6個贊
if value < tree.data {
*parent = *tree
tree = tree.left
} else if value > tree.data {
*parent = *tree
tree = tree.right
}
在本節(jié)中,將獲取節(jié)點的副本。稍后,您將使用哪個修改副本(而不是從樹中的上方鏈接的節(jié)點)。因此,更改為解決問題(游樂場)。請注意,您還需要考慮如果找到的節(jié)點位于樹的頂部,應(yīng)該發(fā)生什么(我還沒有解決這種情況)。*parent = *treeparent.right = nil*parent = *treeparent = tree
添加回答
舉報
0/150
提交
取消