Skip to content

Commit

Permalink
Update 08.01.md
Browse files Browse the repository at this point in the history
  • Loading branch information
julycoding committed May 3, 2014
1 parent 0fa4378 commit b144927
Showing 1 changed file with 3 additions and 2 deletions.
5 changes: 3 additions & 2 deletions ebook/zh/08.01.md
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,7 @@ ok,接下来,咱们最后来了解,红黑树的删除操作。
2. 只有一个儿子。那么把父结点的相应儿子指针指向儿子的独生子,删除儿子结点也OK了。
3. 有两个儿子。这是最麻烦的情况,因为你删除节点之后,还要保证满足搜索二叉树的结构。其实也比较容易,我们可以选择左儿子中的最大元素或者右儿子中的最小元素放到待删除节点的位置,就可以保证结构的不变。当然,你要记得调整子树,毕竟又出现了节点删除。习惯上大家选择左儿子中的最大元素,其实选择右儿子的最小元素也一样,没有任何差别,只是人们习惯从左向右。这里咱们也选择左儿子的最大元素,将它放到待删结点的位置。左儿子的最大元素其实很好找,只要顺着左儿子不断的去搜索右子树就可以了,直到找到一个没有右子树的结点。那就是最大的了。

二叉查找树的插入代码如下所示
二叉查找树的删除代码如下所示
```
TREE-DELETE(T, z)
1 if left[z] = NIL or right[z] = NIL
Expand All @@ -276,7 +276,8 @@ TREE-DELETE(T, z)
17 return y
```

OK,回到红黑树上来,红黑树结点删除的算法实现是:
OK,回到红黑树上来,红黑树结点删除的算法实现是:

RB-DELETE(T, z) 单纯删除结点的总操作
```
1 if left[z] = nil[T] or right[z] = nil[T]
Expand Down

0 comments on commit b144927

Please sign in to comment.