删除最小值:
有两种情况,一直访问到左节点为null,有两种情况,当有节点不为null时,需要将其右孩子替换过去。但是在递归时,不管右孩子有没有我们都可以将其赋值过去。同理最大值~
返回的都是当前数的根节点
寻找最小节点
private Node minimun(Node node){ if(node.left == null) return node; return minimun(node.left); }
寻找最大节点,
private Node maximun(Node node){ if(node.right == null) return node; return maximun(node.right); }
删除最小节点
private Node removeMin(Node node){ if(node.left == null){ Node rightNode = node.right; //不需要右边是否有值 node.right = null; //不再指向了其他点 count --; return rightNode; } node.left = removeMin(node.left); return node; }
删除最大节点
private Node removeMax(Node node){ if(node.right == null){ Node leftNode = node.left; node.left = null; count --; return leftNode; } node.right = removeMax(node.right); return node; }