我正在使用遞歸方法使用鍵在二叉樹中查找節點。所以當我找到節點時,我將它設置爲我的引用變量(foundNode)並返回。但問題是當我讀取對象時,它的值仍然爲空。任何人都可以幫忙。無法在遞歸調用中設置參考變量
findGivenNode(root, key, foundNode, parentStack);
private boolean findGivenNode(Node node, int key, Node foundNode, Stack<Node> parentStack) {
if (node == null) {
return false;
}
parentStack.add(node);
if (node.getData() == key) {
foundNode = node;
return true;
}
boolean leftReturn = findGivenNode(node.getLeftChild(), key, foundNode, parentStack);
boolean RightReturn = findGivenNode(node.getRightChild(), key, foundNode, parentStack);
if (leftReturn || RightReturn) {
return true;
} else {
parentStack.pop();
return false;
}
}
謝謝澄清,但通過設置(foundNode =節點)我試圖獲得具有密鑰的節點的引用而不是節點本身。其次,foundNode只是一個引用變量,因此不能通過調用任何setter方法來設置該值。 – 2014-09-19 06:22:12
第二部分,是的,它可以。 'foundNode'指向您想要更改的節點,以便可以訪問該節點的方法。 – nem035 2014-09-19 06:43:16
但是改變節點不是將參考變量設置到該節點的要點。我需要的只是對該節點的引用。除非我做'foundNode = node; return foundNode;'將方法的返回類型從'void'改爲'Node'。 – 2014-09-19 07:07:06