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

最小堆二叉树的递归函数

齐乐
2023-03-14

很长一段时间以来,我一直在解决这项任务。我需要编写一个递归函数来检查每个节点是否小于其任何子节点。如果二叉树是最小堆,则返回 true,否则返回 false。

到目前为止我所拥有的:

def min_heap(t):
    if t == None:
        return True
    else:
        return t.left.value > t.value and t.right.value > t.value

共有1个答案

柯升
2023-03-14

如果它是递归的,那意味着它应该调用自己。假设最小堆的定义

每个节点都比其子节点小

def min_heap(t):
    if t == None:
        return True
    if t.left and t.value > t.left.value:
        return False
    if t.right and t.value > t.right.value:
        return False
    return min_heap(t.left) and min_heap(t.right)
 类似资料:
  • 我试图递归地在二叉树中找到最小值(不是二叉查找树)。让我困惑的是基本情况。如果TreeNode t为空,返回什么?因为我将使用返回的值将其与当前的最小值进行比较(我认为),我相信我返回的内容很重要。

  • 主要方法: 如果您需要类'BinaryNode',请询问,我会张贴它,我不想用代码交换这个问题... 输入: null null 我不明白为什么节点'2'和'3'返回时左值和右值为null。

  • 本文向大家介绍数据结构 二叉树的递归与非递归,包括了数据结构 二叉树的递归与非递归的使用技巧和注意事项,需要的朋友参考一下 数据结构 二叉树的递归与非递归 实例代码:  先序遍历(递归法)   后序遍历      感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

  • 我有类BinaryTreeNode(int值)及其左子级和右子级,BinaryTree(int rootVal)具有BinaryTreeNode根,rootVal作为其值。我开发了一个代码来计算树中的节点数(在类BinaryTreeNode中),但由于NullPointerException,它不起作用: 然而,我发现了另一个具有类似策略的解决方案: 我已经理解了为什么我的代码会抛出异常(因为le

  • 我正在读二叉树。在练习编码问题时,我遇到了一些解决方案,其中要求找到二叉树的最小深度。现在根据我的理解,深度是从根到节点的边数(叶节点的情况下为叶节点/二叉树) 二叉树{1,2}的最小深度是多少 根据我的解决方案,应该是1。

  • 我在阅读下面的帖子后提出这个问题: 如何找到树的最小可能高度? 实际上,如果给二叉树的输入如下:100,50,70,60,我希望我的算法返回4。 但是下面的代码只返回1,因为它不区分叶[left==NULL] 没有人解释过如果我们希望输出为4而不是1,我们应该做什么。 有人能给我看看返回4而不是1的代码吗? 我认为我在上面选择了错误的样本值,人们对我真正想要的是什么感到困惑!!因此,将我的问题重新