1.概念
-二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:
-若它的左子树不为空,则左子树上所有节点的值都小于根节点的值
-若它的右子树不为空,则右子树上所有节点的值都大于根节点的值
-它的左右子树也分别为二叉搜索树
如下图为一棵搜索二叉树
利用二叉搜索树可以快速查找到某个数据,将查找数据与根节点做比较,然后确定其在左子树还是右子树,再查找。但若根节点为一组数据中的最大值或最小值,二叉搜索树就会变成一个链表,查找时间复杂度为(O)。
2.搜索二叉树的操作及其实现
2.1查找
a、从根开始查找,比根小往左子树走,比根大往右子树走,相等则停止查找
b、最多查找树的高度次,走到空还没找到则这个值不存在
2.2插入
a、若树为空,则将root指向插入的节点
b、不为空按照二叉树性质插入
2.3删除
首先查找该元素,查找到的节点有以下4种情况,并且其可能为左孩子也可能为右孩子
a、该节点无孩子节点(将其父节点指向空,删除该节点)
b、该节点有左孩子,右孩子为空(将其父节点指向其左孩子,删除该节点)
c、该节点左孩子为空,有右孩子(将其父节点指向其右孩子,删除该节点)
d、该节点既有左孩子又有右孩子(用左子树最大值或右子树最小值替代该节点的值,删除对应用于替代的节点)