2011-04-03 74 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