我該怎麼做?我不知道什麼時候會停止bst搜索。在BST中找到所有小於x的數字
0
A
回答
2
如果樹的每個節點都有一個場numLeft
,告訴你多少個節點有在其左子樹(計算本身也是如此),那麼您可以在O(log N)
這樣做只是不斷加入numLeft
到全球對於其值的每個節點結果變量小於x
:
countLessThan(int x, node T)
if T = null
return
if T.value >= x
countLessThan(x, T.left) // T.left contains only numbers < T.value and T.right only numbers > T.value
else
globalResult += T.numLeft
countLessThan(x, T.right)
這將只計數的數字。如果你想打印它們,你需要編寫一個深度優先遍歷,它將打印一個作爲參數給出的子樹。你可以在網上找到很多,所以我不會發布。
0
不知道這是不是你正在尋找或不是,但二叉搜索樹算法是經典的,互聯網充滿了他們。 http://www.algolist.net/Data_structures/Binary_search_tree/Lookup - 至少應該讓你朝着正確的方向前進(你會想修改'found'條件並返回'collection'而不是bool)。
0
如果您需要列表中的數字,您仍然需要遍歷樹。對於BST,您可以從最低到最高進行遍歷。
但是如果你需要子樹代表最低的數字:
def splitLowerTree(x, node):
if node is None: return None
elif node.value == x: return node.left
elif node.value < x:
if node.right is None: return node
else: return Node(node.value, left = node.left, right = splitLowerTree(x, node.right))
else: return splitLowerTree(x, node.left)
相關問題
- 1. 查找給定BST中小於給定數字(n)的最大數字
- 2. 在bst中第k個最小數字
- 3. 在排序數組中找到小於x的最大值
- 4. 如何找到BST的最小元素?
- 5. 找到所有的數字與小數範圍
- 6. 找到比BST中的給定值更高的值的數字
- 7. MySql的尋找到的數據包含所有行小於4個字符
- 8. 遞歸複製BST的所有樹葉到另一個BST
- 9. BST類,找到值
- 10. 尋找在BST
- 11. Java:找到在BST中找不到的節點的深度
- 12. 在BST中找到「nth」值(C)
- 13. 找到bst中最小的深度葉節點
- 14. 找到兩個小於X數的最大功率?
- 15. 返回數字數組是小於x
- 16. 刪除值小於x的PriorityQueue中的所有項目
- 17. 使用AWK找到在第二列中的最小數大於X
- 18. 如何找到第一個元素小於JavaScript中的數組中的x?
- 19. 如何找到所有的數字字符串中的
- 20. 如何獲得大於x的位置的所有數字?
- 21. 正則表達式:找到字符串中的所有數字
- 22. 給出數字的有序數組,我怎麼找對象的大小小於x
- 23. 查找可能後跟小數點的所有數字
- 24. 找到所有關鍵字
- 25. 如何找到這列有所有數字陣列中的
- 26. 該方法如何添加所有BST節點的大小?
- 27. 使用枚舉找到與字母「X」的所有單詞指數
- 28. 如何縮小所有數字中字幕的大小
- 29. 要找到最大元素於K在BST
- 30. BST - 查找元素數量
我只是想知道如何將我修改BST搜索,獲得小於X的元素個數 – ryanxu 2010-06-27 07:46:24