我需要为最小堆二进制树写一个递归来检查这个树是否是最小堆。其中一个测试案例就是NONE。
将None
视为最小堆树并返回True
,或None
是False
吗?
我问的原因是,我会在某个时刻到达离开状态,其节点为None
,如果基本情况为True
,则会返回True
。
答案 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)
然后你可以自由地这样做但是如果你想说的是真的话,那取决于你。