Python 这个函数代表什么样的数据结构?

Python 这个函数代表什么样的数据结构?,python,binary-tree,b-tree,Python,Binary Tree,B Tree,我有下面的函数,我不确定他们是实现了二叉树还是B-树 代码如下: def foo(x): if x: a, b, c = x return foo(a) + b + foo(c) else: return 0 有谁能帮我弄清楚正在使用哪些数据结构吗?这确实是一个二叉树,但对于一些通常更熟悉指针的人来说,这是一个相当奇怪的实现。树的每个节点都是一个3元组,包含: 将整个左子树作为3元组,如果没有子树,则为假类型值; 该节点的值;和

我有下面的函数,我不确定他们是实现了二叉树还是B-树

代码如下:

def foo(x):
    if x:
        a, b, c = x
        return foo(a) + b + foo(c)
    else:
        return 0
有谁能帮我弄清楚正在使用哪些数据结构吗?

这确实是一个二叉树,但对于一些通常更熟悉指针的人来说,这是一个相当奇怪的实现。树的每个节点都是一个3元组,包含:

将整个左子树作为3元组,如果没有子树,则为假类型值; 该节点的值;和 整个右子树为3元组或false类型值。 您的foo函数实际上是对所有节点的求和,尽管我会做一些小的更改:

def sum_tree(tpl):
    if tpl:
        return foo(tpl[0]) + tpl[1] + foo(tpl[2])
    return 0

# Construct tree for testing:
#          __42__          (42)
#         /      \
#        7        5        (12)
#       / \      /
#     12   17   3          (32)
#                          ----
#                          (86)

tree = [[[None, 12, [None, 7, None]], 17, None], 42, [[None, 3, None], 5, None]]
print(sum_tree(tree)) # Output is `86`.

如果我建议您实际阅读数据结构及其用例,那么这是一种正常的方法。您从哪里获得这段代码的?你是在看教程还是书帖?。二叉树是一种非线性的数据结构。我不认为这是在实现任何类型的数据结构。它看起来几乎像是一个快速排序的元组,只是它没有做排序部分。嗨@Aman,这是一个测验,我会及时确定哪个是用于该实现的数据结构。嗨,谢谢你的回答:@paxdiablo,所以你很快就确定了这是一个二叉树数据结构,因为它是一个递归函数,同样在return语句中,我们在左边有相同的函数调用,索引为0 footL1[0],然后在中间标识根,它没有调用函数istelf,只在左、右tpl[1]处有de leaves,最后在右端有footpl[2],它在调用自己。