1

スプレイツリーの右回転メソッドに取り組んでいます。プログラムを実行しようとすると、ヌル ポインター例外が発生し続けますが、その理由がわかりません。これは私のツリーです

      5
     /
    2
   /
  1

これは、lr 割り当て上にあるヌル ポインターを取得する場所です。2 には権利がないため、lr は null である必要がありますが、ノードが null であってはならず、プログラムを続行する必要がありますか? またはnullなので、2に権利があるかどうかを最初に確認する必要がありますか?

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

1 に答える 1

0

の場合lnulll.getRight()null ポインター例外がスローされます。

かどうかをテストする必要がありlますnull:

Node<E> lr = (l==null)?null:l.getRight();

そのコードはisの場合に割り当てnullられ、 is notの場合に割り当てられます。lrlnulll.getRight()lnull

于 2013-03-12T05:53:59.093 に答える