二叉查找树(插入、查询、删除)

插入

不改变树原来的结构,小的插到左边,大的插到右边。

插入

插入10
以此类推:
全部插入

查询

和插入一样,小的往左找,大的往右找

查询

删除

  • 叶子节点(不存在后继结点):直接删除
  • 存在后继节点:使用中序遍历的后继结点取代要删除的节点
    • 后继节点存在右子树:将此右子树移到该后继节点的位置。
    • 后继结点不可能存在左子树,若存在则不是后继结点

红色代表要删除的节点;绿色代表后继节点;蓝色代表后继结点的右子树
删除50
50的后继节点是70,但是70存在右子树。
在这里插入图片描述

其他例子

删除叶子节点(不存在后继结点)

删除30
在这里插入图片描述

存在后继节点

1 后继节点无右子树

删除20
在这里插入图片描述
删除20
在这里插入图片描述

2 后继结点有右子树

删除20

在这里插入图片描述

posted @ 2020-07-09 16:25  qianbuhan  阅读(112)  评论(0)    收藏  举报