1.二叉排序树(Binary Search Tree)
一棵二叉树或者是空二叉树,或者是具有如下性质的二叉树
(1)左子树上所有结点的关键字均小于根结点的关键字
(2)右子树上所有结点的关键字均大于根结点的关键字
(3)左,右子树又各是一棵额二叉排序树
注:进行中序遍历可以得到一个递增的有序队列
2.二叉排序树的查找
若树非空,目标值与根结点的值比较
(1)若相等,则查找成功
(2)若小于根结点,则在左子树上查找
(3)若大于根结点,则在右子树上查找
3.二叉排序树的插入
(1)若原二叉排序树为空,则直接插入结点
(2)若关键字k小于根结点值,则插入到左子树
(3)若关键字k大于根结点值,则插入到右子树
4.二叉排序树的删除
(1)若被删除的结点是叶子结点,则直接删除,不会破坏二叉排序树的性质
(2)若被删除的结点只有一棵左子树或右子树,则让该结点的子树称为其父节点的子树,代替该结点的位置
(3)若被删除的结点有左右两棵子树,则令该结点的直接后继(直接前驱)代替该结点,然后从二叉排序树中删除这个直接后继(直接前驱)
5.二叉排序树的查找效率
设二叉排序树的结点数为n
性能 | 性能指标 |
---|---|
最坏时间复杂度 | O ( n ) O(n) O(n) |
最好时间复杂度 | O ( 1 ) O(1) O(1) |
空间复杂度 | O(n) |