我想解決一個面試問題:如何將BST轉換爲雙鏈表。 以下是我的代碼。我非常困惑python遞歸如何工作。爲什麼在convert2DoubleLst_recursive
之後,prev和head仍然是None,我爲這兩個變量分配了一個新值,爲什麼在這個方法調用之後,我無法保存這個變化。我記得python通過引用傳遞參數,但爲什麼在這裏我無法保存更改。提前謝謝了。Python中的遞歸如何工作
def convert2_recursive(node):
prev,head=None,None
convert2DoubleLst_recursive(node,prev,head)
end=head.lChild
printList(head,end)
def convert2DoubleLst_recursive(node,prev,head):
if node:
convert2DoubleLst_recursive(node.lChild,prev,head)
node.lChild=prev
if prev:
prev.rChild=node
else:
head=node
nextNode=node.rChild
head.lChild=node
node.rChild=head
prev=node
convert2DoubleLst_recursive(nextNode,prev,head)
請修復您的縮進 - 此代碼不會編譯。 – BartoszKP
「我記得python通過引用傳遞參數」你錯誤地記住了。 (我推薦閱讀http://stackoverflow.com/a/986145/110707) – geoffspear
我想你可以通過傳遞包含在列表或字典中的兩個參數來模擬傳遞引用類似的行爲。但你不應該。 –