我有一个BST,我从1 ... n随机插入键(每个排列用1 / n!概率完成)。 我的问题是,即使排列统一,结果树也不是统一?
答案 0 :(得分:3)
很大程度上取决于树的实现。它是自我平衡的吗?考虑1 2 3和3 2 1的简单树
Very simple tree:
add 1
1
add 2
1
\
2
add 3
1
\
2
\
3
然后3 2 1
添加3
3
add 2
3
/
2
add 1
3
/
2
/
1
现在做2 3 1
2
2
\
3
2
/ \
1 3
答案 1 :(得分:1)
二叉搜索树不仅仅是一个统一的搜索树...树是按照新值保存在其中的顺序构建的。正如辉光编码器已经表明的那样,这并不能保证一致性......
具有随机数的均匀分布并不能保证构建二叉树的最佳值顺序
要通过二叉树进行最小努力搜索,必须定期重建树。这通常发生在非工作时间,其中算法可以将整个树读取到链表中,然后从该列表构建具有最佳均匀性的新树