所以我正在为一个项目编写代码,我要将一个节点向左旋转并向右旋转,我把它写出来但是当我运行它时会发生两件事情,我的左旋转方法正在旋转到右边而不是左边,我试过改变它周围的东西仍然向右旋转,因为我的旋转正确,当我尝试运行它时,我得到空指针异常。我只能在每个方法中使用一个return语句,并且必须以递归方式完成,这里有两种方法,我迫切需要帮助!!
public void rotateLeft(int num) {
root=rotateLeft(root,num);
}
private static IntNode rotateLeft(IntNode T,int num){
//easiest case
if(T==null)
{
}
//rotation part
else if(num==T.getNum())
{
IntNode oldRight=T.getRight();
if(T.getRight()!=null){
T.setRight(oldRight.getLeft());
oldRight.setLeft(T);
T=oldRight;
}
else {
}
}
else if(num>T.getNum())
{
T.setRight(rotateLeft(T.getRight(),num));
}
//recursion
else
{
T.setLeft(rotateLeft(T.getLeft(),num));
}
return T;
}
// Rotate the node containing num to the right -- do nothing if not possible
public void rotateRight(int num) {
root=rotateRight(root,num);
}
private static IntNode rotateRight(IntNode T,int num)
{
IntNode oldLeft=T.getLeft();
//easiest case
if(T==null)
{
}
//rotation part
else if(num==T.getNum())
{
if(T.getLeft()!=null){
T.setLeft(oldLeft.getLeft());
oldLeft.setRight(T);
T=oldLeft;
}
else {
}
}
else if(num>T.getNum())
{
T.setLeft(rotateRight(T.getLeft(),num));
}
else
{
T.setRight(rotateRight(T.getRight(),num));
}
return T;
}