gsi*_*011 6 random algorithm binary-tree
是否有可能在O(log n)时间内从平衡二叉搜索树获得均匀分布的随机值(调用函数意味着它同样可能在树中获得任何值)?
我最初的想法是生成一个0,1或2的随机数.如果为0,则从当前节点取左路径,如果为1,则采用正确的路径,否则节点的值为随机值.如果您点击叶节点,请获取该节点的值.我不认为这会随机分发.
这是出于好奇,而不是针对特定的应用程序.
如果您需要任何澄清,请告诉我.
例如,如果你有树
1
/ \
2 5
/
3
Run Code Online (Sandbox Code Playgroud)
调用时,数字1,2,3和5将统一返回 int get_random_number()
澄清:所有其他正常的BST操作应保持为O(log n),如insert(),delete()等.