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