Python:通过递归查找字典中实现的二叉树的大小

Python:通过递归查找字典中实现的二叉树的大小,python,recursion,Python,Recursion,对于家庭作业任务,我们使用递归函数查找字典中实现的二叉树的主题数量 我知道如何在二叉树中遍历,但不知道如何在递归函数中实现 我已经得到了这样的东西: def count_the_subjects(tree): if 'name' in tree: a = a + 1 if 'name' in tree['children'][0]: tree = tree['children'][0] count_the_subjects(tr

对于家庭作业任务,我们使用递归函数查找字典中实现的二叉树的主题数量

我知道如何在二叉树中遍历,但不知道如何在递归函数中实现

我已经得到了这样的东西:

def count_the_subjects(tree):
    if 'name' in tree:
    a = a + 1
    if 'name' in tree['children'][0]:
           tree = tree['children'][0]
           count_the_subjects(tree)
    elif 'name' in tree['children'][1]:
           tree = tree['children'][1]
           count_the_subjects(tree)'
count_the_subjects({'name': 'GAS', 'grade': 0.8, 'children': [{'name': 'CSA', 'grade': 0.5, 'children': [None, {'name': 'TA', 'grade': 0.6}]}, {'name': 'IP', 'grade': 0.99}]})
4
输入如下所示:

def count_the_subjects(tree):
    if 'name' in tree:
    a = a + 1
    if 'name' in tree['children'][0]:
           tree = tree['children'][0]
           count_the_subjects(tree)
    elif 'name' in tree['children'][1]:
           tree = tree['children'][1]
           count_the_subjects(tree)'
count_the_subjects({'name': 'GAS', 'grade': 0.8, 'children': [{'name': 'CSA', 'grade': 0.5, 'children': [None, {'name': 'TA', 'grade': 0.6}]}, {'name': 'IP', 'grade': 0.99}]})
4
输出应如下所示:

def count_the_subjects(tree):
    if 'name' in tree:
    a = a + 1
    if 'name' in tree['children'][0]:
           tree = tree['children'][0]
           count_the_subjects(tree)
    elif 'name' in tree['children'][1]:
           tree = tree['children'][1]
           count_the_subjects(tree)'
count_the_subjects({'name': 'GAS', 'grade': 0.8, 'children': [{'name': 'CSA', 'grade': 0.5, 'children': [None, {'name': 'TA', 'grade': 0.6}]}, {'name': 'IP', 'grade': 0.99}]})
4

您需要从函数返回一些内容,并且需要将递归调用的结果添加到一些内容中。1)不要在
if
elif
中重新分配树。这样会丢失原始对象。可能只是完全去掉变量:
count\u主题(tree['children'][0])
和类似的其他条件。2) 如果和
elif
,则不应为
。它应该取代两个独立的ifs。(试运行以了解原因:))。3) 您应该使用两个递归调用的结果递增
a
。最后,不要忘记在
ifs
之后返回
a