在java中我知道引用也是通过值传递的。让这个工作的唯一方法是返回prev吗?还有其他选择吗?
head是类变量
convertTreeToSortedDoublyLinkedList(root, null);
private void convertTreeToSortedDoublyLinkedList(Node node, Node prev) {
if(node == null){
return;
}
convertTreeToSortedDoublyLinkedList(node.left, prev);
node.left = prev;
if(prev != null) {
prev.right = node;
} else {
head = node;
}
Node right = node.right;
head.left = node;
node.right = head;
prev = node;
convertTreeToSortedDoublyLinkedList(right, prev);
}
答案 0 :(得分:2)
另一种选择是让一个对象在其中包含对node和priv的引用,从被调用的方法修改该对象,并且调用方法将看到更改。
答案 1 :(得分:2)
有两种选择:
一个简单的解决方案是数组:
Node[] ref = new Node[1] {prev};
ref[0] = //update here
我认为选项一会更好,因为Ref-Ref或数组会使方法混乱