//获取右子树中的最小节点
public Node minRightNode(Node node){//传入参数为被删除节点的右孩子Node node
if(node.getLeftChild()==null){
return null;
}
if(node.getLeftChild().getLeftChild()==null){
if(node.getLeftChild().getRightChild()!=null){
/*
* 如果被删除的节点有右孩子,需要用被删除节点的父节点的左孩子指向被删除结点的右孩子,
* 然后再把被删除节点的右孩子指向设为null,那么需要删除的节点就被删掉了
* 意思就是把 D 删除,把A指向C
* A
* / \
* D B
* \
* C
*/
Node temp=node.getLeftChild();
node.setLeftChild(node.getLeftChild().getRightChild());
//node.getRightChild().setLeftChild(null);
temp.setRightChild(null);
return temp;
}
Node temp=node.getLeftChild();
node.setLeftChild(null);
return temp;
}
return minRightNode(node.getLeftChild());
}
java 二叉树(八)获取右子树中的最小节点
最新推荐文章于 2022-03-25 18:38:30 发布