SearchBST
- 输入:
①开始搜索位置
②搜索的值
③搜索起始点的双亲节点
④搜索结果的引用 - 如果该点的值与搜索值相同,将搜索结果引用复制为该点并返回
如果该点的值小于查询值,进入左子树查找,否则进入右子树查找
参数为:
①该点左子树
②查找值
③该点位置
④搜索结果的引用
InsertBST(即使未找到搜索结果,SearchBST也已经将预计插入点定位到叶子节点)
- 输入:
①插入起始点
②插入值 - 对查找值调用SearchBST,若找到则退出
若未找到:
①创建插入节点
②如果本身树为空,则构造树根 - 如果插入点的值大于SearchBST的预插入双亲节点的值则将插入节点接到预插入双亲节点的左子树
否则接到右子树
DeleteBST
- 输入:
①树根节点
②删除值 - 找到删除点的位置
- 对删除点进行判断
①右子树为空,重接左子树
②左子树为空,重接右子树
③左右子树都非空时:
找到删除点左子树的最小值和左子树的次小值
将删除节点的值更改最小值节点的值 - ①若左子树只有一个节点,即没有次小值等于该删除节点,此时将最小值节点的左子树复制给删除节点的左子树
②若非第一种情况,则将最小值节点的左子树复制给次小值节点的右子树