提问者:小点点

只是 None 的二叉树可以被认为是最小堆树吗?


我需要为最小堆二叉树编写一个递归来检查这棵树是否是最小堆。其中一个测试用例只是NONE。

是否被视为最小堆树并返回true,或者False

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


共3个答案

匿名用户

我相信无类型将是完全正确的,因为它不违反最小堆树的定义。

匿名用户

是的,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(无),那么你可以自由地这样做,但如果你想说这是真的还是假的,这取决于你。