标签:
二叉搜索树插入删除演示地址:
http://www.cs.usfca.edu/~galles/visualization/BST.html
细心的你应该发现了,二叉搜索树的每个节点都要比左边的子孙节点的值要大,比右边的要小。二叉搜索树的中序遍历就是将整棵树按从小到大的顺序输出。是不是很神奇^o^
如何在二叉搜索树中查找某个元素呢?首先从根出发,如果和根的值相等,则返回根,否则如果比根小就去左孩子,如果比根大就去右孩子,依次递归进行,直到找到值或者找不到返回空。
那么插入操作呢?紧接着上面的查找算法,在查找失败的时候插入到对应的位置即可。
删除操作会复杂一些,算法如下:
如果没有儿子:直接删除;
如果只有一个儿子:删除后将儿子放在该节点的位置;
有两个儿子:需要从右子树中找到其中的最小值并删除,并将最小值赋值给当前待删除节点。如下图所示:
另外还有线段树,并查集.
标签:
原文地址:http://www.cnblogs.com/beSunshine/p/5573933.html