本文主要是介绍java 二叉树(七)获取左子树中的最大节点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
使用递归算法
此时要获取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 二叉树(七)获取左子树中的最大节点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!