二叉搜索树详解

一、二叉搜索树概念

二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树

  • 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值
  • 若它的右子树不为空,则右子树上所有节点的值都大于根节点的值
  • 它的左右子树也是二叉搜索树

在这里插入图片描述

二、二叉搜索树操作

1、查找

在这里插入图片描述

2、插入

先查找,若不存在,则插入

  • 空树
    在这里插入图片描述
  • 非空树
    在这里插入图片描述

3、删除

先查找,若存在,则删除

  • 要删除的节点无孩子节点
    • 直接删除该节点
  • 要删除的节点只有左孩子节点
    • 使该节点的父节点指向该节点的左孩子节点,然后删除该节点
  • 要删除的节点只有右孩子节点
    • 使该节点的父节点指向该节点的右孩子节点,然后删除该节点
  • 要删除的结点有左、右孩子节点
    • 将其右子树中序下的第一个节点值(最小值)填入待删除节点,最后删除 “最小值” 节点
    • 或者将其左子树中序下的最后一个节点值(最大值)填入待删除节点,最后删除 “最大值” 节点

三、二叉搜索树性能

插入或删除前必须先查找,也就是说,查找效率代表了二叉搜索树中各操作性能
在这里插入图片描述

  • 最优情况下,时间复杂度为 O(log2N)
    • 二叉搜索树为完全二叉树,int a[ ] = {6, 4, 8, 3, 5, 7, 9};
  • 最差情况下,时间复杂度为 O(N)
    • 二叉搜索树退化成单支树,int a[ ] = {3, 4, 5, 6, 7, 8, 9};

引申问题

如何避免二叉搜索树退化成单支树?
答:平衡二叉搜索树

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值