标签:replace style follow isp pareto height roo bad remove
测试结果:
private BinaryTreeNode findHelper(Comparable key, BinaryTreeNode node) { // Replace the following line with your solution. BinaryTreeNode movingnode = node; while(movingnode!=null){ if(key.compareTo((Comparable)(movingnode.entry.key))>0){ movingnode=movingnode.rightChild; }else if(key.compareTo((Comparable)(movingnode.entry.key))<0){ movingnode=movingnode.leftChild; }else return movingnode; } return null; }
public Entry remove(Object key) { // Replace the following line with your solution. if(find(key)==null) return null; BinaryTreeNode movingnode = root; int flag = 0; //为了知道找到的node是parent的左孩子还是右孩子还是root本身 //find the node while(movingnode!=null){ if(((Comparable)key).compareTo((Comparable)(movingnode.entry.key))>0){ movingnode=movingnode.rightChild; flag=1; }else if(((Comparable)key).compareTo((Comparable)(movingnode.entry.key))<0){ movingnode=movingnode.leftChild; flag=2; }else{ BinaryTreeNode returnnode=movingnode; //为了能返回 size--; if(movingnode.leftChild==null&&movingnode.rightChild==null){ if(flag==1){ movingnode.parent.rightChild=null; }else if(flag==2){ movingnode.parent.leftChild=null; }else root=null; // movingnode=null; }else if(movingnode.leftChild!=null&&movingnode.rightChild!=null){ BinaryTreeNode targetnode=movingnode; movingnode=movingnode.rightChild; flag=1; while(movingnode.leftChild!=null){ movingnode=movingnode.leftChild; flag=2; } targetnode.entry=movingnode.entry; if(flag==1){ movingnode.parent.rightChild=movingnode.rightChild; if(movingnode.rightChild!=null){movingnode.rightChild.parent=movingnode.parent;} }else{ movingnode.parent.leftChild=movingnode.rightChild; if(movingnode.rightChild!=null){movingnode.rightChild.parent=movingnode.parent;} } }else if(movingnode.leftChild!=null){ if(flag==1){ movingnode.parent.rightChild=movingnode.leftChild; if(movingnode.leftChild!=null){movingnode.leftChild.parent=movingnode.parent;} }else if(flag==2){ movingnode.parent.leftChild=movingnode.leftChild; if(movingnode.leftChild!=null){movingnode.leftChild.parent=movingnode.parent;} }else{ //root root=movingnode.leftChild; } }else{ if(flag==1){ movingnode.parent.rightChild=movingnode.rightChild; if(movingnode.rightChild!=null){ movingnode.rightChild.parent=movingnode.parent;} }else if(flag==2){ movingnode.parent.leftChild=movingnode.rightChild; if(movingnode.rightChild!=null){movingnode.rightChild.parent=movingnode.parent;} }else{ //root root=movingnode.rightChild; } } return returnnode.entry; } } return null; }
期间发现自己一个错。。。天真的以为把node=null可以把它原本指向也变成null。。。哈哈哈写晕了
标签:replace style follow isp pareto height roo bad remove
原文地址:http://www.cnblogs.com/developerchen/p/7286263.html