1 定义
当一个普通二叉树的每个节点满足以下2个条件时,即为排序二叉树:
- 左分支所有节点的值小于根节点值
- 右分支素有节点的值大于根节点值
2 操作
2.1 查询
1 查询值:target , 根节点值:root
2 IF target = root
3 THEN 返回
4 ELSEIF target < root
5 THEN 下钻到左分支递归查找
6 ELSE 下钻到右分支递归叉查找
7 END IF
2.2 插入
新节点:new , 当前节点 now, 根节点: root
IF(new == root){
返回;
}ELSEIF(new < root) {
钻入左分支;
IF(左分支下 == null){
插入new;
} else{
继续递归,直到找到空位。
}
}ELSEIF(new > root){
钻入右分支;
IF(右分支下 == null){
插入new;
} else{
继续递归,直到找到空位。
}
}
2.3 删除
删除操作分三种情况:
- 无子节点:直接删除目标节点。
- 有1个子节点:删除目标节点,将原子节点放置到目标节点。
- 有2个子节点:删除目标节点,将原右子树中最小的节点放置到目标节点。