谁说面试只问AVL树、B+树、红黑树?那你也得会BST吧!

初始BST

二叉搜索树(Binary Search Tree,BST)又称二叉排序树,其定义为要么是空树,要么是满足二叉搜索树性质的二叉树。

二叉搜索树性质(BST性质)如下:

  1. 若根结点的左子树非空,则左子树的所有结点关键字均小于根结点关键字。
  2. 若根结点的右子树非空,则右子树的所有结点关键字均大于根结点关键字。
  3. 根结点的左右子树本身又各是一棵二叉搜索树。

注:在实际应用中,可能出现关键字相同的情况,可以修改(1)中为小于等于,或(2)中为大于等于,甚至修改为左大右小。
二叉排序树得名于它的一个重要性质:按中序遍历该树所得到的中序序列是一个递增有序序列。

BST的插入和创建

插入的基本思路:
若二叉搜索树bst为空,则创建一个key域为k的结点作为根结点;否则比较k和根结点的关键字,若相等则已有关键字,不再插入或做更新操作;若k小于根结点关键字,插入根结点的左子树;否则插入右子树。

BST的查找

查找的基本思路:
与二分查找类似,逐步缩小查找范围,采用递归查找算法。

BST的删除

删除的基本思路:
删除操作首先要进行查找,假设查找结束时p指向要删除的结点,分为以下几种情况

  1. p指向叶子结点,直接删除。
  2. p指向只有左(右)子树没有右(左)子树的结点,可以直接将左(右)子树替代p指向的结点。
  3. p结点同时有左右子树,可以从其左子树中选择关键值最大的结点minmax,用minmax的值替代p的值,并删除minmax结点;或从其右子树中选择关键值最小的结点maxmin,用maxmin的值替换p的值,并删除maxmin结点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值