我需要为min-heap二进制树编写一个递归,以检查该树是否为min-heap。 测试用例之一只是NONE。

None被认为是最小堆树并返回True ,还是NoneFalse

我要问的原因是,我将在某个时候到达叶子并且它们的节点为None并且如果基本情况为True则它将返回True

===============>>#1 票数:1

我相信none类型将是空虚的,因为它不违反min-heap树的定义。

===============>>#2 票数:0

是的,没有被认为是均值堆树。

===============>>#3 票数:0

您必须是“最小堆”。 当我们处理任何树结构时,通常将Node的子级初始化为None。 其中一个原因是,我们可以很容易地躲过递归这样:

def find_node(node, data):
   if root is None:
      return
   if root.data == data:
       print "Node found"
   find_node(node.left, data)
   find_node(node.right, data)



class Node(object):

    def __init__(self, data):
       self.left = None
       self.right = None
       self.data = data

在您的情况下,您想通过遍历检查树是否是最小堆。 你会做这样的事情

def is_min_heap(root):
  #.....check here and then do
  return is_min_heap(root.left) and is_min_heap(root.right)

但这取决于您要如何处理。 没有子节点的任何一个节点都是最小堆或最大堆,但没有任何意义。 如果你想打电话

is_min_heap(None)那么您可以自由地这样做,但是要由您决定是否为True。

  ask by user3029334 translate from so

未解决问题?本站智能推荐:

1回复

在二叉树中证明最小堆时,出现空指针异常

这个问题已经在这里有了答案: 什么是NullPointerException,我该如何解决? 12个答案 这段代码是为了找出二进制树是否是最小堆,我在公共静态布尔值isMinHeap的第3个if语句中不断获取NullPointerException ,我不确定为什
3回复

最大/最小堆树可以包含重复值吗?

我想知道是否允许最大或最小堆树具有重复值? 我一直试图通过在线资源找到有关这方面的信息是不成功的。
1回复

在什么情况下锦标赛树(优胜者树)会有所帮助?

在锦标赛树的实现中,多余的空间被用作要比较的数据,将其设置在树的叶子上然后进行比较。我读到当我们必须合并k个排序的数组时这很有用。 现在,假设我们要合并k个排序的数组。 如果不是存储实际值,而是存储索引并创建一个最小堆,然后在min_heap实现中使用自定义比较器函数,该函数按该索引处的值排
1回复

最小堆,基于零的数组C ++

下面是我的程序,使用书中的标准逻辑,使用基于0的数组构建最小堆。 由于其基于零的数组,我对左子代使用2*i+1对右子代使用2*i+2 ,但它仍然输出错误。 我想念什么?
2回复

检查最小堆数组是否有效

我有这个函数def validate(self),它应该检查给定的数组是否是有效的最小堆。 我认为它可以工作,但是因为我的数组开'<' not supported between instances of 'int' and 'NoneType' [None, '<' not suppo
2回复

python中的最小堆

我想通过定义自定义比较函数将一组对象存储在最小堆中。 我看到有一个heapq模块可用作python发行版的一部分。 有没有办法在这个模块中使用自定义比较器? 如果没有,还有其他人建立了自定义最小堆吗?
1回复

最小堆二叉树的递归函数

我一直坚持解决这一任务已经有一段时间了。 我需要编写一个递归函数来检查每个节点是否小于其任何子节点。 如果二叉树是最小堆,则返回true,否则返回false。 我到目前为止所拥有的:
1回复

Python中的最小/最大堆实现

这是我在python中实现的MinHeap和MaxHeap。 这使用比较器来反转MaxHeap中的存储顺序 MinHeap似乎工作正常,但是MaxHeap抛出以下错误。 我似乎不太了解我在这里做错了什么。 有人可以帮我弄这个吗。
1回复

来自heapq python的pop max值,Python中是否有最大堆? [重复]

可能重复: 我在Python中使用什么来实现最大堆实现? 我试图以某种方式实现python的heapq但是对于max-heap。 一个解决方案是使用(-1)和多个队列号,但这对我没有帮助,因为我需要将URL存储在堆中。 所以我想要一个max heapq,我可以弹出最大的值。
1回复

Python中的递归完整二叉树-树倾斜

这是完整二叉树的递归实现(不是列表中的Python中的二叉搜索树。需要构建平衡树的逻辑方面的帮助,我编写的逻辑会生成倾斜的树。我知道可以做到这一点与队列,但我需要递归的实现。 这是代码: