2014-04-07 59 views
0

正如标题中提到的,二叉搜索树中最左边的节点总是包含最小值?在搜索路径中,比如说A是最左边的节点,B是父节点,C是最右边的节点。有没有任何例子,订单a < = b < = c并不总是这样?我知道可以进行轮换以确保平衡性能得以维持,但是我不能拿出一个例子,其中事物并不总是平衡的,以至于不总是如此。我只是在学习这个数据结构,与数组和列表相比,它绝对不同于我。是的,这是一个给我的练习。我只想要一些提示/想法!二叉搜索树 - 最左边的节点总是包含最小值?

回答

1

您的问题的直接答案是“是的”,但是应该限定这是基于假设您正在通常在数据结构类中教授的方式构建树。

我的意思是,如果您确实根据问题的值是否小于或大于当前节点来确定是向左还是向右插入节点,那么答案是肯定的。显然,如果您使用其他标准来做出决定,那么这可能会改变。 :)由于这种策略,你可以保证没有比左边路径下的父节点更大的值。

这实际上是二叉树的巨大力量进来的地方。然而,它的含义是,如果插入的数据分布不均匀,最终可能会出现一个朝一个方向严重偏斜的树。这是一个问题,因为这种树的一部分目的是在插入时间和搜索时间之间进行权衡。如果树歪斜了,没有什么好处,事实上,找到一个节点比平面阵列中可能需要更长的时间。

这将引导您讨论均衡树木和AVL树木。为了保证任何搜索的最坏情况特定Big O值,每次插入导致左右节点数量变得太平衡时,树会重新平衡。虽然这会增加更多的插入和删除开销,但保证最糟糕的情况在您拥有大量数据时非常值得。

希望你玩得开心!数据结构是一个迷人而有趣的学习过程!