2012-11-02 32 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的左樹應該是正確的樹? –