2015-03-31 89 views
0

如果給定一棵樹,其節點的整數爲1〜10,所有節點的分枝因子爲3,如何編寫一個遍歷從樹到樹的計數的函數離開對於每一個路徑計算從根到葉的所有路徑的所有節點

所以在這個例子中,我們假設它需要返回此:

{1: 1, 2: 5} 

我試過這個輔助功能:

def tree_lengths(t): 
    temp = [] 
    for i in t.children: 
     temp.append(1) 
     temp += [e + 1 for e in tree_lengths(i)] 
    return temp 

有太多錯誤的Wi這個代碼。首先,它會在返回列表中留下遍歷中每個訪問節點的印記 - 所以很難從列表中找出哪些是我需要的值。另一方面,如果樹很大,它不會在到達「for i in t.children」之前的路徑中留下根路徑和較早節點的印記。它需要首先:複製根葉子的所有路徑;第二:專門爲每個路徑計數的最終數字返回一個列表。

請幫忙!這非常困難。

+0

您是否想要統計路徑的數量?還是你想列出所有的路徑? – inspectorG4dget 2015-03-31 19:42:43

+0

實際上你很難清楚你想達到什麼效果。例如,你告訴(1〜10)輸出「{1:1,2:5}」是什麼意思?什麼是關鍵,什麼是價值? – khajvah 2015-03-31 19:46:10

回答

0

我不確定你想要做什麼,但你可能需要定義一個遞歸函數,它需要一個節點(樹或子樹的頭)和一個整數(你的孩子數到目前爲止已經遍歷),並且可能是到目前爲止每個訪問節點的列表。如果節點沒有孩子,你已經到了葉子,你可以打印出你需要的任何信息。否則,對於每個孩子,再次用新參數(+1來計數,子節點作爲頭節點等)調用這個遞歸函數。

相關問題