【问题标题】:How to create a Tree-based Map with keys如何使用键创建基于树的地图
【发布时间】:2012-10-23 14:54:54
【问题描述】:

在我的计算机科学课程介绍中,我们有一个基于树的地图问题。我对如何按照他们要求的方式制作树感到非常困惑。

到目前为止我所拥有的:

class EmptyMap():
    __slots__ = ()

class NonEmptyMap():
    __slots__ = ('left','key','value','right')

def mkEmptyMap():
    m = EmptyMap()
    return m

def mkNonEmptyMap(map1, key, value, map2):
    m = NonEmptyMap()
    m.left = map1
    m.key = key
    m.value = value
    m.right = map2
    return m

def mapInsert(key, value, map1):
   if isinstance(map1, EmptyMap):

   else:

我被困在应该是递归的 mapInsert 函数上。我们的辅导实验室现在没有任何辅导员,因此非常感谢您的帮助。

链接到作业文件http://www.cs.rit.edu/~vcss241/Homeworks/08/TreeMap-stu.pdf

谢谢!

【问题讨论】:

    标签: python map tree slots


    【解决方案1】:

    我从未写过或见过 Python,但试试这个:

    def mapInsert(key, value, map1):
      if isinstance(map1, EmptyMap):
        return mkNonEmptyMap(mkEmptyMap(), key, value, mkEmptyMap())
      else:
        if map1.key == key:
          map1.value = value;
        else if map1.key > key:
          return map1.left = mapInsert(key, value, map1.left)
        else:
          return map1.right = mapInsert(key, value, map1.right)
    

    【讨论】:

    • 如果我有 smallMap = mapInsert('one', 1, mapInsert('two', 2, mapInsert('three', 3, mkEmptyMap()))) 并打印出 smallMap.key它的一个,smallMap.left 和 .right 都是空的。我将如何返回树以获取值 3 和 2?值 1 应该是 3 的左树,而 2 应该是右树?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-09
    • 1970-01-01
    • 2023-02-16
    相关资源
    最近更新 更多