- 它的左右子树也分别为二叉搜索树
=================================================================================
代码实现:
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;
}
=================================================================================
代码实现:
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;
}
=================================================================================
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等面试解析及知识点整理
Java分布式高级面试问题解析文档
其中都是包括分布式的面试问题解析,内容有分布式消息队列,Redis缓存,分库分表,微服务架构,分布式高可用,读写分离等等!
互联网Java程序员面试必备问题解析及文档学习笔记
Java架构进阶视频解析合集
分布式高级面试问题解析文档**
其中都是包括分布式的面试问题解析,内容有分布式消息队列,Redis缓存,分库分表,微服务架构,分布式高可用,读写分离等等!
[外链图片转存中…(img-UCatAYfu-1721190301999)]
互联网Java程序员面试必备问题解析及文档学习笔记
[外链图片转存中…(img-I7dqs6EV-1721190301999)]
Java架构进阶视频解析合集