二叉排序樹(shù)怎么構(gòu)造 二叉排序樹(shù)的插入,如果遇到,相同的節(jié)點(diǎn),怎么辦?
二叉排序樹(shù)的插入,如果遇到,相同的節(jié)點(diǎn),怎么辦?二進(jìn)制排序樹(shù)只提供了一個(gè)數(shù)據(jù)結(jié)構(gòu)。如果不加以應(yīng)用,它的存在就毫無(wú)意義。所以您想要什么取決于您的具體需求。如果在實(shí)際應(yīng)用程序中允許相同的值,則可以左右插入
二叉排序樹(shù)的插入,如果遇到,相同的節(jié)點(diǎn),怎么辦?
二進(jìn)制排序樹(shù)只提供了一個(gè)數(shù)據(jù)結(jié)構(gòu)。如果不加以應(yīng)用,它的存在就毫無(wú)意義。
所以您想要什么取決于您的具體需求。如果在實(shí)際應(yīng)用程序中允許相同的值,則可以左右插入。你只需要確保你的樹(shù)在中間順序遍歷時(shí)是非嚴(yán)格單調(diào)遞增的如果你在實(shí)際應(yīng)用中需要一個(gè)唯一的值,你的實(shí)現(xiàn)應(yīng)該以某種形式告訴用戶(hù),比如返回一個(gè)特殊的值或者拋出一個(gè)異常
二叉排序樹(shù)只要求每個(gè)節(jié)點(diǎn)都小于它,右子節(jié)點(diǎn)大于或等于它。首先,我們來(lái)看一下刪除操作:“先把刪除的節(jié)點(diǎn)和最后一個(gè)節(jié)點(diǎn)交換,然后刪除它,在這個(gè)過(guò)程中把最后一個(gè)節(jié)點(diǎn)分割,重建二叉樹(shù),如果刪除根節(jié)點(diǎn)左邊的一個(gè)節(jié)點(diǎn),那么在和最后一個(gè)節(jié)點(diǎn)交換之后,為了保持二叉排序樹(shù)的特性,最后一個(gè)節(jié)點(diǎn)會(huì)逐漸向上移動(dòng),這很可能會(huì)改變根節(jié)點(diǎn)的位置。然后讓我們看看插入操作:“直接與根節(jié)點(diǎn)比較。如果小于根節(jié)點(diǎn),插入左子樹(shù),遞歸一次,選擇合適的節(jié)點(diǎn),如果大于根節(jié)點(diǎn),依此類(lèi)推。所以平衡二叉樹(shù)可能不同。我建議你畫(huà)一幅圖,試著操作一下,加深對(duì)這兩種操作的理解!