数据结构 Java数据结构 --- 二叉搜索树

  • 它的左右子树也分别为二叉搜索树

在这里插入图片描述

2. 二叉树操作 - 查找

=================================================================================

在这里插入图片描述

代码实现:

public Node search(int val){

while (root != null){

if(val > root.val){// val>root.val 在右子树查找

root = root.right;

}else if(val < root.val){// val<root.val 在左子树查找

root = root.left;

}else {// val=root.val 返回该节点即可

return root;

}

}

return null;

}

3. 二叉树操作 - 插入

=================================================================================

在这里插入图片描述

代码实现:

public boolean insert(int val) {

// 当为空树的时候 直接插入val

if(root == null) {

root = new Node(val);

return true;

}

// 当不为空时的时候,进行判断

Node parent = null;

Node child = root;

while (child != null){

// val 较大 寻找右子树

if(child.val < val){

parent = child;

child = child.right;

}else {//val 较小 寻找左子树

parent = child;

child = child.left;

}

}

// 这里 parent的左子树或右子树就可以进行插入,此时进行判断.

if(parent.val < val){

parent.right = new Node(val);

}else {

parent.left = new Node(val);

}

return true;

}

4. 二叉树操作 - 删除

=================================================================================

在这里插入图片描述

在这里插入图片描述

public void remove(int key) {

Node cur = root;

Node parent = null;

while (cur != null){

if(cur.val == key){

//找到要删除的节点 进行删除

removeNode(cur,parent);

}else if(cur.val < key){

parent = cur;

cur = cur.right;

}else {

parent = cur;

cur = cur.left;

}

}

}

public void removeNode(Node cur,Node parent){

if(cur.left == null){ // 情况一

if(cur == root){

root = cur.right;

}else if(cur == parent.left){

parent.left = cur.right;

}else {

parent.right = cur.right;

}

}else if(cur.right == null){ // 情况二

if(cur == root){

root = cur.left;

}else if(cur == parent.right){

parent.right = cur.left;

}else {

parent.left = cur.left;

}

}else { // 情况三

最后

Java架构进阶面试及知识点文档笔记

这份文档共498页,其中包括Java集合,并发编程,JVM,Dubbo,Redis,Spring全家桶,MySQL,Kafka等面试解析及知识点整理

image

Java分布式高级面试问题解析文档

其中都是包括分布式的面试问题解析,内容有分布式消息队列,Redis缓存,分库分表,微服务架构,分布式高可用,读写分离等等!

image

互联网Java程序员面试必备问题解析及文档学习笔记

image

Java架构进阶视频解析合集
分布式高级面试问题解析文档**

其中都是包括分布式的面试问题解析,内容有分布式消息队列,Redis缓存,分库分表,微服务架构,分布式高可用,读写分离等等!

[外链图片转存中…(img-UCatAYfu-1721190301999)]

互联网Java程序员面试必备问题解析及文档学习笔记

[外链图片转存中…(img-I7dqs6EV-1721190301999)]

Java架构进阶视频解析合集

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值