java 中允许键重复的,二叉搜索树的定义是否允许重复键?
許多算法將指定排除重復(fù)項(xiàng) . 例如,MIT算法書中的示例算法通常提供沒(méi)有重復(fù)的示例 . 實(shí)現(xiàn)重復(fù)(在節(jié)點(diǎn)上或在一個(gè)特定方向上作為列表)是相當(dāng)簡(jiǎn)單的 . )
大多數(shù)(我見(jiàn)過(guò))將左邊的孩子指定為<=,將右邊的孩子指定為> . 實(shí)際上,允許右子節(jié)點(diǎn)或左子節(jié)點(diǎn)等于根節(jié)點(diǎn)的BST將需要額外的計(jì)算步驟來(lái)完成允許重復(fù)節(jié)點(diǎn)的搜索 .
最好利用節(jié)點(diǎn)上的列表來(lái)存儲(chǔ)重復(fù)項(xiàng),因?yàn)樵诠?jié)點(diǎn)的一側(cè)插入'='值需要重寫該側(cè)的樹以將節(jié)點(diǎn)作為子節(jié)點(diǎn)放置,或者節(jié)點(diǎn)放置為宏-child,在某些點(diǎn)下面,這消除了一些搜索效率 .
您必須記住,大多數(shù)課堂示例都經(jīng)過(guò)簡(jiǎn)化,以描繪和傳達(dá)概念 . 在許多現(xiàn)實(shí)世界的情況下,他們不值得蹲下 . 但是聲明“每個(gè)元素都有一個(gè)鍵,沒(méi)有兩個(gè)元素具有相同的鍵”,在元素節(jié)點(diǎn)上使用列表不會(huì)違反 .
那么請(qǐng)關(guān)注您的數(shù)據(jù)結(jié)構(gòu)書所說(shuō)的內(nèi)容!
編輯:
二進(jìn)制搜索樹的通用定義涉及基于在兩個(gè)方向之一上遍歷數(shù)據(jù)結(jié)構(gòu)來(lái)存儲(chǔ)和搜索密鑰 . 從語(yǔ)用意義上講,這意味著如果值為<>,則以兩個(gè)“方向”之一遍歷數(shù)據(jù)結(jié)構(gòu) . 因此,從這個(gè)意義上講,重復(fù)的值根本沒(méi)有任何意義 .
這與BSP或二進(jìn)制搜索分區(qū)不同,但并非完全不同 . 搜索算法有“旅行”的兩個(gè)方向之一,或者已經(jīng)完成(成功與否) . 所以我很抱歉我的原始答案沒(méi)有解決“通用定義”的概念,因?yàn)橹貜?fù)實(shí)際上是一個(gè)獨(dú)特的主題(成功搜索后處理的內(nèi)容,而不是二進(jìn)制搜索的一部分 . )
總結(jié)
以上是生活随笔為你收集整理的java 中允许键重复的,二叉搜索树的定义是否允许重复键?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 尚拙是什么意思
- 下一篇: oracle怎么读取表空间文件大小,or