【问题标题】:Why does binary search tree tend to become unbalanced to the right?为什么二叉搜索树容易向右不平衡?
【发布时间】:2015-03-01 17:28:47
【问题描述】:

这是来自Heap 讲座幻灯片 8。

添加,窥视和删除对我来说很有意义,为什么这些操作是 O(log n) - 在每次移动后遍历 BST 将树切成两半。谁能解释最后一句话背后的直觉,即“树倾向于向右不平衡”?为什么不离开?对我来说,由于平均定律,它应该是平衡的,比如随着时间的推移,小于根的元素的频率应该与大于根的元素的频率相等。 Law of Averages

【问题讨论】:

    标签: java algorithm tree binary-tree binary-search-tree


    【解决方案1】:

    不要想太多。这仅仅是因为remove 操作总是会转到最左边的元素并将其删除。经过几次这些操作后,无论根节点或其他任何东西,您最终都会使树在树的右侧“更重”。

    即使你有一个价值极高的根节点,它倾向于将新添加的元素推到左边,你最终仍然会在左边得到一个“右重”的子树。

    【讨论】:

    • 为什么要删除“总是去最左边的元素”?如果是remove(49); remove(9) 会怎样?还是这个remove() 总是remove(min())? (如果是这样的话..)
    • @user2864740 该评论专门针对用作优先级队列的 BST。
    • @DavidEisenstat 然后,一个声明(评论)应该消除混淆 - 除了最顶部的“PQ”之外,问题或回复中再也没有提到过。
    • @user2864740 整个讲座都是关于优先队列的,幻灯片上只有这么多空间。
    • 啊,我看到你总是从最左边移除,所以你当然在右边有一棵不平衡的树。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-18
    • 1970-01-01
    • 2012-05-13
    • 1970-01-01
    • 2014-09-18
    相关资源
    最近更新 更多