如何在java中进行二进制搜索树旋转?
所以我正在为一个项目编写一个代码,在这个项目中,我将向左旋转一个节点,然后向右旋转,我已经将它写出来了,但是当我运行它时,出现了两个情况,我的向左旋转方法是向右旋转,而不是向左旋转,我尝试过改变它周围的东西,但仍然向右旋转,至于我的rotate right,当我尝试运行它时,我得到了null指针异常。我只能使用一个返回语句每个方法,必须做递归这里有两个方法,我在绝望中需要帮助如何在java中进行二进制搜索树旋转?,java,recursion,rotation,binary-search-tree,Java,Recursion,Rotation,Binary Search Tree,所以我正在为一个项目编写一个代码,在这个项目中,我将向左旋转一个节点,然后向右旋转,我已经将它写出来了,但是当我运行它时,出现了两个情况,我的向左旋转方法是向右旋转,而不是向左旋转,我尝试过改变它周围的东西,但仍然向右旋转,至于我的rotate right,当我尝试运行它时,我得到了null指针异常。我只能使用一个返回语句每个方法,必须做递归这里有两个方法,我在绝望中需要帮助 public void rotateLeft(int num) { root=rotateLeft(r
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;
}
如果调用了
rotateRight()
,并且T
为null
,会发生什么情况?我设法修复了我的rotate right方法,它只是我的左侧有问题,如果T为null,那么我不希望该方法在@ChuckB执行任何操作