【发布时间】:2014-04-19 21:28:30
【问题描述】:
mapSearch 是一个函数,它接受一个键和一个映射,并返回与键关联的值,如果键不存在则返回 None。
问题:当我运行搜索功能时,无论我输入什么键,它都会返回相同的值。
class EmptyMap():
__slots__ = ()
class NonEmptyMap():
__slots__ = ('left', 'key', 'value', 'right')
EMPTY_MAP = EmptyMap()
def mkEmptyMap():
return EMPTY_MAP
def mkNonEmptyMap(b1, key, value, b2):
node = NonEmptyMap()
node.left = b1;
node.key = key;
node.value = value;
node.right = b2;
return node;
def mapInsert(key, value, mp):
if isinstance(mp, EmptyMap):
return mkNonEmptyMap(mkEmptyMap(), key, value, mkEmptyMap())
else:
if key == mp.key:
mp.value = value
elif mp.key < key:
mp.left = mapInsert(key, value, mp.left)
else:
mp.right = mapInsert(key, value, mp.right)
return mp
def search(key, mp):
if isinstance(mp, EmptyMap):
return None
elif isinstance(mp, NonEmptyMap):
if key == mp.key:
return mp.value
elif mp.key < key:
mp.left = search(key, mp.left)
return mp.value
else:
mp.right = search(key, mp.right)
return mp.value
【问题讨论】:
-
您能展示一些示例输入和输出吗?
-
首先修复最后四行中的明显错误。
标签: python map return-value binary-search-tree key-value