【问题标题】:Random Binary Search Tree随机二叉搜索树
【发布时间】:2011-03-22 05:45:02
【问题描述】:

我有一个 BST,我从 1...n 随机插入密钥 (每个排列都以 1/n!概率完成)。 我的问题是为什么即使排列是 uniform 生成的树也不 uniform

【问题讨论】:

  • “统一”树是什么意思?平衡的树?
  • 他的意思是为什么在数据相同的情况下树的结构不同
  • @glowcoder 谢谢你,这正是我的意思
  • 看看我的答案 - 考虑每次插入时树的结构,以及下一个元素的去向。您会看到,如果没有进行某种重新平衡,按排序顺序添加元素会导致树的优化非常差!!

标签: tree binary-tree binary-search binary-search-tree


【解决方案1】:

很大程度上取决于树的实现。是自我平衡吗?考虑 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

【讨论】:

    【解决方案2】:

    二叉搜索树不仅仅是一棵统一的搜索树...一棵树是按照新值在其中保存的顺序构建的。正如 Glowcoder 已经展示的那样,这并不能保证一致性......

    随机数的均匀分布并不能保证构建二叉树的最优值顺序

    要通过二叉树进行最少的搜索,必须定期重建二叉树。这通常发生在非工作时间,算法可能会将整棵树读入一个链表,然后从该链表中构建一棵具有最佳一致性的新树

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-26
      相关资源
      最近更新 更多