我有一個Python類,它存儲了更多類型的本身,作爲鋸齒狀的樹結構。最高層和中間層不存儲任何數據,但最低層不會。我有一個列表,例如[8, 2, 5, 3]
,我想將每個值分配給樹中最低級別的相應插槽:每個節點可以有不同數量的連接向下,並且可以有任意數量的層。我的問題是,我不能使用類似問題中提供的traverse
函數,因爲我正在分配多個值,並且我無法輕鬆獲得底部每個值的索引。這裏是節點類別:將輸入列表映射到最低級別的嵌套列表
class Node(object):
def __init__(self, branches):
self.branches = branches # This is a list of Node objects
self.value = 0
分支列表包含更多節點,其中有節點列表本身。該值默認爲0,但如前所述,稍後將有一個列表映射到它們。下面是如何創建一個樹一個例子,我想做什麼:
tree = Node([
Node([
Node([
None # This node's value is 1
]),
Node([
None # This node's value is 2
])
]),
Node([
Node([
None # This node's value is 3
]),
Node([
None # This node's value is 4
])
])
])
tree.set_inputs([1, 2, 3, 4]) # See above comments, this is what I want
我怎樣才能做到這一點?我的唯一的想法是遞歸函數,輪流對輸入的索引成二進制(這基於分支的數目可以改變)數目如0100110
確定由索引及其分支採取在每一遞歸的方向:
# In the example above: b0 -> b1 -> b0 -> b0 -> b1 -> b1 -> b0.
如果這是解決這個問題的方法,我需要一些幫助來實現它。否則,任何有關我的問題的幫助表示讚賞。
有很多問題需要得到回答之前,我們可以提供幫助的問題。你的代碼是什麼樣的?節點的孩子是否有序?您爲葉節點賦值的順序很重要,還是僅僅分配了每個值? – jme
感謝您的建議,對不起,我忘了代碼示例。我已經編輯了這個問題來包含一個。另外,順序很重要。從左到右或從右到左是無關緊要的,只是它保持一致。 – pengowen123