簡體   English   中英

二叉樹中的數字總和

[英]Sum of number in a binary tree

我有一個可以包含兩個自然數或兩個更多列表的列表。 這些列表中的每一個還包含兩個整數或兩個進一步的列表,依此類推。 ei: [[4, 7], [[3, 5], [9, 1]]] 我需要使用遞歸來計算樹中所有數字的總和並編寫以下代碼:

def getSum(tree):
    sum = 0
    for elemente in tree:
        if type(elemente)==int:
            sum += elemente
        else:
            sum = getSum(elemente)
    return sum

代碼不起作用,因為它總是返回 sum 為 12,所以我的問題是,我怎樣才能讓它工作但仍然使用遞歸? 我沒有正確識別基本情況嗎?

您可以這樣做:

def getSum(tree):
    sum = 0
    for elemente in tree:
        if type(elemente)==int:
            sum += elemente
        else:
            sum += getSum(elemente)
    return sum

tree = [[4, 7], [[3, 5], [9, 1]]]
print(getSum(tree))
29

或者,您可以在遞歸循環之外跟蹤sum

例如像這樣:

def getSum(tree, sum = None):
    sum = sum or 0
    for elemente in tree:
        if type(elemente)==int:
            sum += elemente
        else:
            sum = getSum(elemente, sum)
    return sum

tree = [[4, 7], [[3, 5], [9, 1]]]
print(getSum(tree))
29

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM