只有None的二叉树是否可以被视为最小堆树?

时间:2015-05-16 18:53:28

标签: python binary-tree min-heap

我需要为最小堆二进制树写一个递归来检查这个树是否是最小堆。其中一个测试案例就是NONE。

None视为最小堆树并返回True,或NoneFalse吗?

我问的原因是,我会在某个时刻到达离开状态,其节点为None,如果基本情况为True,则会返回True

3 个答案:

答案 0 :(得分:1)

我认为无类型将是真空的,因为它不违反最小堆树的定义。

答案 1 :(得分:0)

是,None被视为均值堆树。

答案 2 :(得分:0)

你必须意味着一个Min Heap。当我们处理任何树结构时,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)然后你可以自由地这样做但是如果你想说的是真的话,那取决于你。