我試圖實現刪除BST中的節點。 這裏是我的部分代碼。python如何通過引用傳遞?
def delete(node,key):
#Locate that node with value k
cNode=node
target=None
while cNode:
if cNode.value==key:
target=cNode
break
elif node.value>key:
cNode=cNode.lChild
elif node.value<key:
cNode=cNode.rChild
target=None
return node
當我試圖用上面的方法刪除一個葉節點。我失敗了。當方法返回時,它對原始BST沒有任何影響。那麼這個代碼有什麼問題?我認爲它應該有一些關於python如何通過引用傳遞參數?但我現在很困惑。 非常感謝提前。
這裏沒有任何代碼可以刪除樹中的任何內容。您可能需要切斷父母和子女之間的鏈接 – nos
但我將目標節點(即葉節點)設置爲None,它也應該更改原始樹,對不對? – lexie
Python已經通過引用_values_;它從不默默地複製任何東西。但它沒有通過引用傳遞_variables_,因爲這樣做沒有意義; Python變量不是內存位置,它們只是某些名稱空間中的名稱。 – abarnert