数据结构学习笔记——二叉搜索树

一:定义

二叉搜索树(Binary search tree):二叉树,可能为空,每个元素有一个关键字且关键字唯一,左子树关键字小于根节点关键字,根节点关键字小于右子树关键字

有重复值的二叉搜索树(Binary search tree with duplicates):关键字不唯一的二叉搜索树

索引二叉搜索树(indexed binary search tree):二叉搜索树的每个节点添加一个leftSize域,值为左子树元素个数,该值也是索引值

二:二叉搜索树的操作

查找:要查找关键字为thekey的节点。从根开始查找,如果key比根的关键字小,则在左子树中找,否则在右子树中找,子树中方法类似

插入:要插入新节点thePair。首先通过查找操作看树中是否已经存在某个节点的关键字与新节点的关键字相同,如果存在,则用新节点的元素值替换查找到节点的元素值;如果不存在,那么就将新节点作为查找中断节点的孩子插入二叉搜索树。

删除:删除节点p。考虑三种情况:

        1.p是叶节点:释放该节点空间

        2.p只有一棵子树:如果p是根节点,则p唯一子树的根节点成为新的根节点;如果p有父节点,则让p的父节点指向p的子树,然后释放p

        3.p有两棵子树:先将该节点的元素替换为它的左子树的最大元素或者右子树的最小元素,然后把替换元素的节点删除。要找到一个节点的左子树中关键字最大的节点,先移动到左子树的根,然后沿着右孩子指针移动,直到右孩子指针为空为止,找到右子树中关键字最小的节点则是沿着左孩子指针移动。先替换,替换之后的左子树最大节点处就成了一个叶节点或者仅仅有单子树的节点,再按照第二种情况的方法删除。

二叉搜索树的高度:随机插入的平均高度是O(logn)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值