计算二进制数树中偶数叶子的数量

时间:2015-03-23 15:33:56

标签: python recursion binary-tree

好的,对于这个赋值,我必须定义一个递归函数,它接受一个二进制数字树并返回它们上有偶数的叶子数。我的功能远远看起来像这样:

def count_even_leaves(bnt):
    """bnt -> number"""
    evens = []
    if not isinstance(bnt,tuple):
        return bnt
    else:
        if count_even_leaves(bnt[0]) % 2 == 0:
            evens.append(count_even_leaves(bnt[0]))
        elif count_even_leaves(bnt[1]) % 2 == 0:
            evens.append(count_even_leaves(bnt[1]))
    return len(evens)

在我看来,它似乎应该有效,但它没有回复我期望的答案。

1 个答案:

答案 0 :(得分:2)

def count_even_leaves(bnt):
    if not isinstance(bnt,tuple):
        return (bnt+1)%2
    evens = count_even_leaves(bnt[0])
    evens += count_even_leaves(bnt[1])
    return evens

这是你正在寻找的吗?我假设所有叶子都是整数,而一个不是假的节点是包含[0]和[1]中左右孩子的元组/数组。