java 二叉树(七)获取左子树中的最大节点
2016-07-06 17:24
211 查看
使用递归算法
此时要获取A的左子树中的最大值,首先分析最大值一定在左子树中的最右边,即B,这个最大值B也一定没有右孩子,那么我们只需要把A的右孩子的指向指向C即可,涉及到B的双亲节点和B的左孩子。
然后把得到的B节点返回即可。
(上次有错误,条件没覆盖全,这次修改下,测试完全ok!)
//查找一个节点下所有子孙中的最大值,并且删除这个节点,
public Node delFind(Node node){ //传入参数为被删除节点的左孩子Node node
//Node temp=node;
if(node.getRightChild()==null){
return node;
}
if(node.getRightChild().getRightChild()==null){
if(node.getRightChild().getLeftChild()!=null){
/*
* 如果被删除的节点有有左孩子,需要用被删除节点的父节点的右孩子指向被删除结点的左孩子,
* 然后再把被删除节点的左孩子指向设为null,那么需要删除的节点就被删掉了
* 意思就是把B删除,把A指向C
* A
* / \
* D B
* /
* C
*/
Node temp=node.getRightChild();
node.setRightChild(node.getRightChild().getLeftChild());
//node.getRightChild().setLeftChild(null);
temp.setLeftChild(null);
return temp;
}
Node temp=node.getRightChild();
node.setRightChild(null);
return temp;
}
return delFind(node.getRightChild());
}
此时要获取A的左子树中的最大值,首先分析最大值一定在左子树中的最右边,即B,这个最大值B也一定没有右孩子,那么我们只需要把A的右孩子的指向指向C即可,涉及到B的双亲节点和B的左孩子。
然后把得到的B节点返回即可。
(上次有错误,条件没覆盖全,这次修改下,测试完全ok!)
//查找一个节点下所有子孙中的最大值,并且删除这个节点,
public Node delFind(Node node){ //传入参数为被删除节点的左孩子Node node
//Node temp=node;
if(node.getRightChild()==null){
return node;
}
if(node.getRightChild().getRightChild()==null){
if(node.getRightChild().getLeftChild()!=null){
/*
* 如果被删除的节点有有左孩子,需要用被删除节点的父节点的右孩子指向被删除结点的左孩子,
* 然后再把被删除节点的左孩子指向设为null,那么需要删除的节点就被删掉了
* 意思就是把B删除,把A指向C
* A
* / \
* D B
* /
* C
*/
Node temp=node.getRightChild();
node.setRightChild(node.getRightChild().getLeftChild());
//node.getRightChild().setLeftChild(null);
temp.setLeftChild(null);
return temp;
}
Node temp=node.getRightChild();
node.setRightChild(null);
return temp;
}
return delFind(node.getRightChild());
}
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- [C/C++]反转链表
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序