网站首页 > java教程 正文
一、定义
1.若它的左子树不为空,则左子树上所有结点的值均小于等于根结点的值;
2.若它的右子树不为空,则右子树上所有结点的值均大于等于根结点的值;
3.它的左右子树均为二分查找树。
二、图解实例
选取一个节点为参照根节点,会发现所有的左侧子节点小于等于参照点,右侧大于等于参照点。
比如根节点9, 9所有的左侧子节点(5、2、7、1、3)都小于等于9.
比如根节点13,13所有的左侧子节点(11、10、12)都大于等于13.
1、查找
查找节点 10:根节点9开始,10>9 右侧,10<13 左侧,10<11 左侧,找到10.
2、插入
插入 子节点 4:4<9 左侧,4<5 左侧,4>2 右侧,4>3 右侧
3、删除
删除节点(因为情况有多种,处理逻辑也是比较麻烦。)
A:删除叶子:好吧就是一个干巴巴的叶子,好办,找到-删除。
删除 7 ,这个7是叶子,那就找到并删除
B:有一个分支的,删除节点,子节点上提。
删除 2节点:找到2 ,删除2
再上提子节点 1
C:两个分支,节点删除,右子树最小的数代替被删除节点,
因为右子树最多有一个右叶子,重新指定引用。
删除 13,13有左右两个分支:
因为 右分支肯定大于左面分支,所以上提右子节点 15
四、其实三已经告诉了我们,会有一种极端情况
二分查找树就是为了提高查询效率,而当前这种和我们写了一堆for循环是一样的。
为了应对这种情况:又出现了平衡二叉树--红黑树。后面会提到。
猜你喜欢
- 2025-09-13 面试中如果这样写二分查找_面试分怎么查
- 2025-09-13 java中Arrays类中,binarySearch()方法的返回值问题
- 2025-09-13 单片机上实现二分查找+线性插值计算
- 2025-09-13 数据结构之二分查找:c++版本_二分查找算法c语言递归
- 2025-09-13 玩蛇(Python) - 算法:二分查找(Binary Search)
- 2025-09-13 高级Java面试之二分法查找_java二分查找算法代码
- 2025-09-13 秒懂如何运用二分查找算法_二分查找算法是什么意思
- 2025-09-13 【程序员常用十算法】二分查找法—5分钟掌握
- 2025-09-13 看动图学算法(二):二分查找算法的原理和Java讲解
- 2025-09-13 发现了二分查找的秘密_二分查找细节
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)