java - 为什么二叉搜索树会变得向右不平衡?

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

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

enter image description here 添加、查看和删除对我来说很有意义,为什么这些操作是 O(log n) - 遍历 BST 在每次移动后将树切成两半。谁能解释最后一句话背后的直觉,即“树倾向于向右变得不平衡”?为什么不离开?对我来说,它应该是平衡的,因为平均法则,就像随着时间的推移,小于根的元素频率应该与大于根的元素频率持平。 Law of Averages

最佳答案

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

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

关于java - 为什么二叉搜索树会变得向右不平衡?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28796695/

相关文章:

algorithm - throttle 请求的速率限制算法

c - 使用指针写入 strend(s, t)(检查 `s` 是否以 `t` 结尾)

Java : logic and operation (&&) on lambda expression allowed?

java - 如何通过 Youtube Data Api V3 获取建议 channel ?

algorithm - 如何生成 float 的随机分区并且每个部分都有最小值pMin?

database - 使用 "tree keys"在 Neo4j 中创建分层数据(树)结构

GIT,工作目录是如何填充的

c++ - LinkedList ADT指针 block

java - 堆数据结构再堆方法

java - Android套接字客户端 - 无法发送消息