二叉搜索树是一种节点值之间具有一定数量级次序的二叉树,对于树中每个节点:
例如:图 2.2.1 所示的二叉树为一棵二叉搜索树。
例如:图 2.2.2 所示不是一棵二叉搜索树,因为节点 40 的左孩子节点值为 44,不满足二叉搜索树的定义。
(1)先检测该元素是否在树中已经存在。如果已经存在,则不进行插入;
(2)若元素不存在,则进行查找过程,并将元素插入在查找结束的位置。
如果是一个叶子节点直接删除即可,下面是三种不为叶子节点时的删除情况
1、待删除结点的左子树为空
2、待删除结点的右子树为空
3、待删除结点的左右子树均不为空
- 若树为空树,则查找失败,返回 nullptr。
- 若 key 值小于当前结点的值,则应该在该结点的左子树当中进行查找。
- 若 key 值大于当前结点的值,则应该在该结点的右子树当中进行查找。
- 若 key 值等于当前结点的值,则查找成功,返回对应结点的地址。