2014-11-21 84 views
0

我有這2個功能 - 第一是創建一個節點,第二個是一個遞歸函數,通過樹,以便找到某個值的位置雲:如何添加一個節點在二叉搜索樹

def create_node(number=None): 
    return {"Number": number, "Right": None, "Left":None} 

def insert(number, pointer): 
    pointer_number=pointer["number"] 

    if pointer_number is none: 
     pointer["number"]=number 

    elif number > pointer_number: 
     if pointer["right"] is none: 
      pointer["right"] = create_node(number) 
     else: 
      insert(number, pointer["right"]) 
    else: 
     if pointer["left"] is none: 
      pointer["left"] = create_node(number) 
     else: 
      insert (number, pointer["left"]) 

現在我已經創建了樹的根:

root = create_node(5) 

我所面臨的問題是,當我嘗試將值添加到使用插入功能樹。我錯過了一些東西,我不知道該怎麼做。請指教..

+2

那麼,你沒有大寫'None'。 (我也建議使用類而不是字典!) – Ryan 2014-11-21 01:20:42

回答

0

所以兩件事

  • NoneType大寫:None(所有的,如果是你在create_node做)
  • Python字符串比較是大小寫敏感的,所以當你檢查pointer["number"]價值,你是不是真的檢查你在create_node方法中設置的方法,它的關鍵是"Number"(大寫「N」),這是它拋出的原因KeyError"right""left"也是如此。