【发布时间】:2010-07-13 22:34:45
【问题描述】:
如果一个有 N 个节点的二叉树是一个节点值为 1、2、..、N 并且满足以下属性的二叉树,那么它就是“好奇”的。
- 树的每个内部节点都恰好有一个大于它的后代。
- 1,2, ..., N 中的每个数字在树中只出现一次。
奇异二叉树的例子
4
/ \
5 2
/ \
1 3
你能给出一个算法来生成一个具有 n 个节点的均匀随机好奇二叉树,它在 O(n) 保证时间内运行吗?
假设您只能使用随机数生成器,它可以为您提供范围 [1, k] 中任意 1
O(nlogn) 时间的解决方案也会得到我的支持。
请遵循标记二叉树不同的通常定义,以考虑不同的好奇二叉树。
【问题讨论】:
-
好的。我很闷。下班休息日:-)
-
随机作为不同树的均匀分布或从 [1,n] 中的均匀随机分布中挑选的每个节点?
-
@Jacob:随机分布在不同的树上。节点总是 1,2,...,n。编辑问题以澄清。
-
对于奇数 N>2,有偶数个树。运行 RNG c 次将给出 c^N 个可能的输出,一个奇数。我们甚至可以保证运行时的任何事情吗?
-
@Nabb:对不起,我不明白你的反对意见。