所以我必須將一個節點插入二叉搜索樹。在我的入門級課程中,二叉搜索樹被表示爲鏈接列表,如下圖所示的這個二叉樹的 [4, [5, [0, [],[]], [2, [], []]], [1, [],[]]]
:插入到二叉搜索樹
。
(這不是一個二叉搜索樹,只是一張二叉樹,我有一張照片)。
所以插入一個節點到一棵樹,我寫了下面的遞歸代碼:
def tree_node(key):
return [key, [],[]]
def insert(bst,key):
if bst == []:
return tree_node(key)
if key < bst[0]:
return insert(bst[1],key)
else:
return insert(bst[2],key)
return bst
這只是返回雖然節點,而不是新的樹節點
例如:
>>> insert([2, [1, [], []], [3, [], []]], 6)
[6, [], []]
當它應該是:
>>> insert([2, [1, [], []], [3, [], []]], 6)
[2, [1, [], []], [3, [], [6, [], []]]]
謝謝!
你永遠不會將節點插入你的樹中。看看你的基本情況 - 而不是將節點插入它應該是的,你只是簡單地返回節點。 –