java 二叉树(七)获取左子树中的最大节点

来源:互联网 发布:debian设置软件源 编辑:程序博客网 时间:2024/05/02 07:35

使用递归算法


此时要获取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());}




0 0
原创粉丝点击