您的位置:首页 > 其它

二叉查找树的基本操作

2016-10-26 18:01 127 查看
本总结是是个人为防止遗忘而作,不得转载和商用。

二叉查找树

         二叉查找树(二叉搜索树)是满足以下条件的二叉树:

                   左子树上的所有结点值均小于根结点值,

                   右子树上的所有结点值均不小于根结点值,

                   左右子树也满足上述两个条件

查找

         给定一颗二叉查找树,查找某结点p的过程如下:

                   将当前结点cur赋值为根结点root;

                   若p的值小于当前结点cur的值,查找cur的左子树;

                   若p的值不小于当前结点cur的值,查找cur的右子树;

                   递归上述过程,直到cur的值等于p的值或者cur为空;

         当然,若结点是结构体,注意定义“小于”“不小于”“等于”的具体函数。

插入

         插入过程如下:

                   若当前的二叉查找树为空,则插入的元素为根结点;

                   若插入的元素值小于根结点值,则将元素插入到左子树中;

                   若插入的元素值不小于根结点值,则将元素插入到右子树中;

                   递归上述过程,直到找到插入点为叶子结点。

删除

         记待删除的结点为p,分三种情况进行处理:

                   p为叶子结点

                   p为单支结点

                   p的左子树和右子树均不空

p为叶子结点

         p为叶子结点,直接删除该结点,再修改p的父结点的指针。



p为单支结点

         若p为单支结点(即只有左子树或右子树),则将p的子树与p的父亲结点相连,删除p即可。



p的左子树和右子树均不空

         这里要先解释两个概念:

                   P的直接后继:P的右孩子的最左子孙,如:上面图中5的直接后继就是6。

                   P的直接前驱:P的左海子的最右子孙,如:上面图中5的直接前驱就是3。

         删除过程:

                   1,将p的直接后继的值拷贝到p处

                   2,删除p的直接后继

                   PS:将上面两步的“直接后继”替换为“直接前驱”也行。

修改二叉树的某个节点

         如把上面图中的节点10改成14,最简单的做法是把节点10删掉,然后插入14。

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法 二叉树