Binary search tree(二叉查找树)(二)

2014-11-24 03:21:37 · 作者: · 浏览: 4
c-set operations SEARCH, MINIMUM, MAXIMUM,SUCCESSOR, and PREDECESSOR so that each one runs in O(h) time on a binary search tree of height h.

2.3 Insertion

Like the other primitive operations on search trees, the procedure TREE-INSERT runs in O(h)time on a tree of height h.

插入操作比较简单就直接上伪代码了: 往树T中插入z \

2.4 Deletion

Like the other primitive operations on search trees, the procedure Deletion runs in O(h)time on a tree of height h.
删除操作实现比较复杂,我们可以把它分为四种情况:
1.如果z没有左孩子,这样我们就用z的右孩子取代z的位置。如果z也没有右孩子的话,那么z就没有孩子可以直接删除。 2.如果z仅有一个孩子,排除上面的情况,那么z只有左孩子,我们可以用他的左孩子取代它的位置 3.如果z有两个孩子,则此时又要分两种情况。首先我们找到z的后继y a.如果y是z的右孩子,那么我们就用y取代z b.如果y是z的右子树中的一个而不是z的右孩子,那么我们首先将z的右孩子和y交换位置,然后再用y取代z
下面这张图及为四种情况。 \
伪代码实现: 首先我们实现一个 TRANSPLANT(T,u,v) 即用v取代u \
接下来实现整体的删除伪代码:



References: http://en.wikipedia.org/wiki/Binary_search_tree