树——二叉排序树(BST)

Posted 牧鱼ys

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了树——二叉排序树(BST)相关的知识,希望对你有一定的参考价值。

定义

二叉排序树是一棵具有如下特性的二叉树:

  1. 若左子树非空,则左子树上所有节点的值均小于根节点的值
  2. 若右子树非空,则右子树上所有节点的值均大于根节点的值
  3. 左、右子树均为一棵排序二叉树

二叉树的中序遍历可以得到一个递增的有序序列

查找

  • 从根节点开始沿某个分支逐层向下比较。
  • 先跟根节点比较,如果值相等则查找成功
  • 若小于根节点的关键字,则再根节点的左子树上查找,否则在右子树上查找

插入

若原二叉树为空,则直接插入节点;否则,小于根节点的值,则插入到左子树,大于则插入到右子树上。
插入的结点一定是一个新添的叶结点

删除

删除可以分一下三种情况来考虑

  1. 若被删除节点z为叶结点,则直接删除
  2. 若被删除结点z只有一颗左子树获右子树,则让z的子树成为z父节点的子树
  3. 若节点z右左右两棵子树,则令z的直接后继(或直接前驱)代替z,然后从二叉排序中删去这个直接后继(或直接前驱),又转为第一获第二种情况。

查找效率分析

二叉树的查找效率,主要取决于树的高度。若左右子树的高度只差绝对值不超过1,则平均查找长度为 O ( l o g 2 n ) O(log_2n) O(log2n);若二叉排序树是一个只有左(右)孩子的单支树,则平均查找长度为 O ( n ) O(n) O(n)

以上是关于树——二叉排序树(BST)的主要内容,如果未能解决你的问题,请参考以下文章

二叉排序树(BST)删除节点

树和二叉树总结—BST二叉排序树

数据结构与算法:树 二叉排序树(BST)

二叉排序树BST的定义及其增删改查操作(C语言)

树——二叉排序树(BST)

[平衡树] aw3786. 二叉排序树(BST)