二叉搜索树的插入与删除图解

一、二叉搜索树(BSTree)的概念

       二叉搜索树又被称为二叉排序树,那么它本身也是一棵二叉树,那么满足以下性质的二叉树就是二叉搜索树:

       1、若左子树不为空,则左子树上左右节点的值都小于根节点的值

       2、若它的右子树不为空,则它的右子树上所有的节点的值都大于根节点的值

       3、它的左右子树也要分别是二叉搜索树

二叉搜索树的插入与删除图解

       

二叉搜索树的插入与删除图解

===================================================================

二、二叉搜索树的插入

      1、搜索

       插入之前我们先来说说它的搜索,像上图这样的一棵二叉搜索树,我们要查找某一个元素是很简单的。因为它的节点分布是有规律的,所以查找一棵元素只需要如下的步骤就可以了:

       

二叉搜索树的插入与删除图解

二叉搜索树的插入与删除图解

       2、插入

       由于二叉搜索树的特殊性质确定了二叉搜索树中每个元素只可能出现一次,所以在插入的过程中如果发现这个元素已经存在于二叉搜索树中,就不进行插入。

       否则就查找合适的位置进行插入。

第一种情况:_root为空

     直接插入,return  true;

           

二叉搜索树的插入与删除图解

二叉搜索树的插入与删除图解

第二种情况:要插入的元素已经存在

       如上面所说,如果在二叉搜索树中已经存在该元素,则不再进行插入,直接return  false;

第三种情况:能够找到合适位置

     

二叉搜索树的插入与删除图解

 

二叉搜索树的插入与删除图解

===================================================================

三、二叉搜索树的删除

       对于二叉搜索树的删除操作,主要是要理解其中的几种情况,写起来还是比较简单的。

当然一开始还是需要判断要删除的节点是否存在于我们的树中,如果要删除的元素都不在树中,就直接返回false;否则,再分为以下四种情况来进行分析:

     》要删除的节点无左右孩子

     》要删除的节点只有左孩子

     》要删除的节点只有右孩子

     》要删除的节点有左、右孩子

 

删除方法解释:

     对于第一种情况,我们完全可以把它归为第二或者第三种情况,就不用再单独写一部分代码进行处理;

     》如果要删除的节点只有左孩子,那么就让该节点的父亲结点指向该节点的左孩子,然后删除该节点,返回true;

         

二叉搜索树的插入与删除图解

二叉搜索树的插入与删除图解

     》如果要删除的节点只有右孩子,那么就让该节点的父亲结点指向该节点的右孩子,然后删除该节点,返回true;

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/c791865618886c06336cb355b51b272b.html