我该怎么做?我不知道什么时候会停止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