二叉搜索树(搜索二叉树、二叉排序树)
二叉搜索树又称二叉排序树,它要么是一棵空树,要么是具有以下性质的二叉树:
1.若它的左子树不为空,则左子树上所有节点的值都小于根节点的值2.若它的右子树不为空,则右子树所有节点的值都大于根节点的值
3.它的左右子树也分别为二叉搜索树
搜索二叉树的查找:
最多查找高度次,效率较高
搜索二叉树具有排序+去重的功能,叫它二叉排序树是因为中序遍历时,其遍历结果就是一个有序的结果。
二叉搜索树的删除
替换法删除的代码实现
按照上面的写法同时解决两种情况(即上述和下述情况)是会出错的(指针问题)。
二叉搜索树不支持修改。
二叉搜索树的缺陷:
二叉搜索树的增删查的时间复杂度:O(h),最坏的情况是h = N
改进方案:平衡树:主要是AVL树和红黑树
平衡树和搜索树仅仅只是效率的区别,功能上并没有区别。
二叉搜索树的应用
Key的搜索模型:判断关键字在不在。
1.例如:宿舍门禁
(二叉搜索树还可以顺便排序+去重)
2.检查一篇英文文档中单词拼写是否正确
我们可以把词库中的单词都插入到一棵搜索树中,然后查的时候就查在不在这里面,不在就说明单词有问题
Key/Value模型:通过Key去找value
1.简单的中英翻译程序
2.统计水果出现的次数
具体实现:第二十七节2:40:00到完 只听了一遍