树(3)二叉搜索树

Published on with 0 views and 0 comments

二叉搜索树是一种节点值之间具有一定数量级次序的二叉树,对于树中每个节点:

  • 若其左子树存在,则其左子树中每个节点的值都不大于该节点值;
  • 若其右子树存在,则其右子树中每个节点的值都不小于该节点值。

 例如:图 2.2.1 所示的二叉树为一棵二叉搜索树。
image20220406161546cdc0i15.png

例如:图 2.2.2 所示不是一棵二叉搜索树,因为节点 40 的左孩子节点值为 44,不满足二叉搜索树的定义。
image20220406161600564k6if.png

插入

(1)先检测该元素是否在树中已经存在。如果已经存在,则不进行插入;
(2)若元素不存在,则进行查找过程,并将元素插入在查找结束的位置。
二叉搜索树插入 20220406163419mhzv0tm.gif

删除  

如果是一个叶子节点直接删除即可,下面是三种不为叶子节点时的删除情况

1、待删除结点的左子树为空
待删除节点的左子树为空 20220406163220ob8z9so.gif

2、待删除结点的右子树为空
待删除节点的右子树为空 20220406163324u0bavz6.gif

3、待删除结点的左右子树均不为空
待删除节点的左右子树都不为空 202204061633407xzivjx.gif

查找
  1. 若树为空树,则查找失败,返回 nullptr。
  2. 若 key 值小于当前结点的值,则应该在该结点的左子树当中进行查找。
  3. 若 key 值大于当前结点的值,则应该在该结点的右子树当中进行查找。
  4. 若 key 值等于当前结点的值,则查找成功,返回对应结点的地址。

二叉搜索树的查找 20220406164638r7k2zu1.gif


标题:树(3)二叉搜索树
作者:cuijianzhe
地址:https://cjzshilong.cn/articles/2022/04/08/1649399838593.html