6.15. 搜索树分析¶
6.15. Search Tree Analysis
在完成了二叉搜索树的实现后,我们将对已实现的方法进行快速分析。首先来看一下 put
方法。其性能的限制因素是二叉树的高度。回顾词汇部分,树的高度是指根节点与最深叶节点之间的边的数量。高度是限制因素,因为在寻找将节点插入树中的适当位置时,我们在树的每一层最多只需进行一次比较。
二叉树的高度可能是多少?这个问题的答案取决于键的添加顺序。如果键是以随机顺序添加的,那么树的高度大约是
完全平衡的树的左右子树中的节点数量相同。在平衡的二叉树中,put
方法的最坏情况性能是 put
在搜索合适的插入位置时需要进行的最大比较次数。
不幸的是,通过以排序顺序插入键,可能会构造出一个高度为 Figure 6
。在这种情况下,put
方法的性能是

现在你理解了 put
方法的性能受到树的高度限制,你可能也能猜到其他方法,如 get
、in
和 del
也受到类似的限制。由于 get
方法在树中搜索键,最坏情况下需要搜索到树的底部才可能找到键。乍一看,del
可能看起来更复杂,因为它可能需要在完成删除操作之前寻找后继节点。但记住,寻找后继节点的最坏情况也是树的高度,这意味着你只是增加了工作量的倍数。由于倍数是一个常数因子,它不会改变不平衡树的
With the implementation of a binary search tree now complete, we will do a quick analysis of the methods we have implemented. Let’s first look at the put
method. The limiting factor on its performance is the height of the binary tree. Recall from the vocabulary section that the height of a tree is the number of edges between the root and the deepest leaf node. The height is the limiting factor because when we are searching for the appropriate place to insert a node into the tree, we will need to do at most one comparison at each level of the tree.
What is the height of a binary tree likely to be? The answer to this question depends on how the keys are added to the tree. If the keys are added in a random order, the height of the tree is going to be around
A perfectly balanced tree has the same number of nodes in the left subtree as the right subtree. In a balanced binary tree, the worst-case performance of put
is put
will need to do as it searches for the proper place to insert a new node.
Unfortunately it is possible to construct a search tree that has height Figure 6
. In this case the performance of the put
method is

Now that you understand that the performance of the put
method is limited by the height of the tree, you can probably guess that other methods, get
, in
, and del
, are limited as well. Since get
searches the tree to find the key, in the worst case the tree is searched all the way to the bottom and no key is found. At first glance del
might seem more complicated since it may need to search for the successor before the deletion operation can complete. But remember that the worst-case scenario to find the successor is also just the height of the tree which means that you would simply double the work. Since doubling is a constant factor, it does not change worst-case analysis of
创建日期: 2024年9月9日