2012-11-02 38 views
0

对于我的计算机科学课程介绍,我们有一个基于树的地图问题。我对如何以他们所要求的方式制作树木感到非常困惑。如何使用键创建基于树的地图

我有什么至今:

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

谢谢!

回答

0

我从未写入或看出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) 
+0

如果我有smallMap = mapInsert( '一个',1,mapInsert( '2',2,mapInsert( '三',3 ,mkEmptyMap()))),我将smallMap.key打印出来,并且smallMap.left和.right都是空的。我将如何返回树来获得值3和2?值1应该是3和2的左树应该是正确的树? –