Java 空指针展开树

Java 空指针展开树,java,rotation,splay-tree,Java,Rotation,Splay Tree,我正在为一棵八字树研究右旋转方法。当我试着运行我的程序时,我总是得到一个空指针异常,但我不知道为什么。这是我的树 5 / 2 / 1 这就是我得到空指针的地方,它位于lr赋值上。lr应该为null,因为2没有权限,但是节点不应该为null,然后程序应该继续运行吗?或者因为它是空的,我必须先检查2是否有权利 Node<E> p = findParent(x.getData()); Node<E> l = x.

我正在为一棵八字树研究右旋转方法。当我试着运行我的程序时,我总是得到一个空指针异常,但我不知道为什么。这是我的树

      5
     /
    2
   /
  1
这就是我得到空指针的地方,它位于lr赋值上。lr应该为null,因为2没有权限,但是节点不应该为null,然后程序应该继续运行吗?或者因为它是空的,我必须先检查2是否有权利

    Node<E> p = findParent(x.getData());    
    Node<E> l = x.getLeft();
    Node<E> lr = l.getRight();
Node p=findParent(x.getData());
节点l=x.getLeft();
节点lr=l.getRight();

如果
l
null
,则
l.getRight()
将引发null指针异常

您需要测试
l
是否为
null

Node<E> lr = (l==null)?null:l.getRight();
Node lr=(l==null)?null:l.getRight();
如果
l
null
,则该代码将
null
分配给
lr
,如果
l
不是
null
,则该代码将分配
l.getRight()