2011-04-03 60 views
1
if(key == '1'){//insert at ->right.right 
    BinaryNode tempPointer = root; 

    while(tempPointer != null){ 
     tempPointer = tempPointer.right; 
    } 
    BinaryNode newNode = new BinaryNode(x); 
    newNode.right = null; 
    newNode.left = null; 
    size++; 
    lastNode = newNode; 
    newNode.parent = tempPointer; 
    tempPointer.right = newNode; 
} 

它一直说termPointer只能在此位置为null。我不明白为什么。Java中的'空指针访问'问题

这也将失败:当tempPointer是null

newNode.parent = tempPointer.parent; //'tempPointer can only be null here' 
tempPointer = newNode; 

回答

8

while循环才会结束。在循环后您不会将tempPointer设置为任何其他值,因此它将保留null,直到函数结束。

+0

^_ ^这就是睡眠不足呢...感谢指出。 – 2011-04-03 16:20:04

2

实际上你需要一个向前看的指针,它指向当前节点的右侧。喜欢的东西,

BinaryNode tempPointer = root; 
lookaheadPointer = root; 
while(lookaheadPointer != null) { 
    tempPointer = lookaheadPointer; 
    lookaheadPointer = tempPointer.right; 
} 

在当前的代码中,tempPointer是在循环的末尾的空,由@Julien