计算二叉树中偶数叶子的数量

Count number of even leaves in a Binary Number Tree

好的,所以对于这个作业,我必须定义一个递归函数,它采用二进制数树和 returns 上有偶数的叶子的数量。我到目前为止的功能如下所示:

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)

在我看来这应该有效,但它没有返回我期望的答案。

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

这是您要找的吗?我假设所有叶子都只是整数,一个不是叶子的节点是一个 tuple/array,包含 [0] 和 [1] 中的左右子节点。