计蒜客课程竞赛入门--二叉搜索树 流程记

二叉搜索树插入删除演示地址:

http://www.cs.usfca.edu/~galles/visualization/BST.html

细心的你应该发现了,二叉搜索树的每个节点都要比左边的子孙节点的值要大,比右边的要小。二叉搜索树的中序遍历就是将整棵树按从小到大的顺序输出。是不是很神奇^o^

如何在二叉搜索树中查找某个元素呢?首先从根出发,如果和根的值相等,则返回根,否则如果比根小就去左孩子,如果比根大就去右孩子,依次递归进行,直到找到值或者找不到返回空。

那么插入操作呢?紧接着上面的查找算法,在查找失败的时候插入到对应的位置即可。

删除操作会复杂一些,算法如下:

    如果没有儿子:直接删除;

    如果只有一个儿子:删除后将儿子放在该节点的位置;

    有两个儿子:需要从右子树中找到其中的最小值并删除,并将最小值赋值给当前待删除节点。如下图所示:

另外还有线段树,并查集.

 

posted @ 2016-06-10 17:10  水天异色  阅读(211)  评论(0)    收藏  举报