查找算法之二叉查找树

定义

一棵二叉查找树(BST)是一棵二叉树,其中每个节点都含有一个键且每个节点的键都大于其左子树中的任意节点的键而小于右子树的任意节点的键。

查找

从根节点开始查找,如果要查找的元素大于根节点,就在根节点的右子树中开始查找,如果要查找的元素小于根节点,就在根节点的左子树中进行查找。
从根节点开始,在每个节点中查找的进程都会递归地在它的一个子节点上展开,因此一次查找也就定义了树的一条路径。

插入

查找的简洁性是二叉树的重要特性之一。
当查找一个不存在于树中的节点并结束于一条空链接时,我们需要做的就是将链接指向一个含有被查找的键的新节点。

第一种情况,root为空,直接插入。
第二种情况,要插入的元素已经存在,则不再进行插入
第三种情况,能够找到合适的位置,
《查找算法之二叉查找树》

删除

开始需要判断要删除的节点是否存在于我们的树中,如果要删除的元素都不在树中,就直接返回false;否则,分为以下四种情况来分析。
1、要删除的节点无左右孩子
2、要删除的节点只有左孩子
3、要删除的节点只有右孩子
4、要删除的节点有左右孩子

  • 对于第一种情况,可以完全归为第二或第三种情况,就不用单独再写一部分代码进行处理。
  • 如果要删除的节点只有左孩子,那么就让节点的父节点指向该节点的左孩子,然后删除该节点

  • 如果要删除的节点只有右孩子,那么就让该节点的父节点指向该节点的右孩子,然后删除该节点

  • 如果要删除的节点的左孩子和右孩子都在,首先找到该节点的右子树中的最左孩子,就是右子树中最小的元素,然后他的值和要删除的节点的值进行交换,然后删除那个节点。

《查找算法之二叉查找树》

性能分析

《查找算法之二叉查找树》

参考资料:https://www.cnblogs.com/MrListening/p/5782752.html

    原文作者:二叉查找树
    原文地址: https://blog.csdn.net/u011337574/article/details/80706321
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞