当前位置: 首页 > 知识库问答 >
问题:

二叉树中的数和

王长卿
2023-03-14

我有一个列表,可以包含两个自然数或两个以上的列表。每个列表还包含两个整数或两个其他列表,依此类推。e、 i.:[[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,所以我的问题是,如何使它工作,但仍然使用递归?。我没有正确地识别基本情况吗?

共有1个答案

翟凯
2023-03-14

如果您需要它是递归,您必须将保持在递归循环之外。

例如:

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
 类似资料:
  • 下面给出了二叉树的实现。 如图中所示,树不是完整的二叉树。如何编写一个函数,将上述二叉树转换为完整的二叉树,只需将字符串数据节点添加到没有子节点的节点,即可生成完整的二叉树。 我将手动在代码中添加节点,以获得如下结果树: 但是,如何编写一个函数,它将采取根节点和返回树,这是完整的二叉树。

  • 二叉树 二叉树采用二叉链表存储,要求根据给定的先序遍历序列和中序遍历序列建立二叉树,并输出后序遍历序列、结点总数、叶子数、度为1的结点数、度为2的结点数。 输入格式: 测试数据有多组,处理到文件尾。每组测试数据的第一行输入结点数n(1≤n≤10),第二、三行各输入n个整数,分别表示二叉树的先序遍历序列和中序遍历序列。 输出格式: 对于每组测试,在一行上分别输出该二叉树的后序遍历序列,结点总数,叶子

  • 主要内容:什么是二叉排序树?,使用二叉排序树查找关键字,二叉排序树中插入关键字,二叉排序树中删除关键字,总结前几节介绍的都是有关静态 查找表的相关知识,从本节开始介绍另外一种查找表—— 动态查找表。 动态查找表中做查找操作时,若查找成功可以对其进行删除;如果查找失败,即表中无该关键字,可以将该关键字插入到表中。 动态查找表的表示方式有多种,本节介绍一种使用树结构表示动态查找表的实现方法—— 二叉排序树(又称为 “二叉查找树”)。 什么是二叉排序树? 二叉排序树要么是空 二叉树,要么具有如下特点:

  • 树的特征和定义 树(Tree)是元素的集合。我们先以比较直观的方式介绍树。下面的数据结构是一个树: 树有多个节点(node),用以储存元素。某些节点之间存在一定的关系,用连线表示,连线称为边(edge)。边的上端节点称为父节点,下端称为子节点。树像是一个不断分叉的树根。 每个节点可以有多个子节点(children),而该节点是相应子节点的父节点(parent)。比如说,3,5是6的子节点,6是3,

  • 问题查找具有n个节点的完整二叉树中的叶节点数。 我为上述问题编写了一个递归程序,每当我到达一个没有子节点的节点时,遍历树并增加叶节点的数量。但由于这棵树是一棵完整的二叉树,我认为这会使问题变得更容易,但我不知道如何解决。它是否可以简化为紧凑形式(类似于公式)。

  • 考虑二叉树,其中每个节点要么是叶,要么正好有两个子节点(左和右,我们认为不同)。在节点上有多少不同的树 例如: -3个节点-