2017-04-06 96 views
0

的至少共同的祖先,我對以下問題的工作類:錯誤發現二叉搜索樹

找到兩個節點之間的最小共同祖先在二叉搜索樹 。

我已經轉入下面的代碼,並被通知它不能正常工作,即使我認爲我已經正確地解決了所有問題。有人可以提供有關我在做什麼錯誤的見解嗎?

# Main Function. 
def Question4(T, r, n1, n2): 
    # Compare values of n1, n2, in relation to r to find LCA. 
    while not n1 <= r <= n2: 
     r = r if n1 <= r else r 
    # return LCA. 
    return r 

# Test Cases. 
T = [[0, 1, 0, 0, 0], 
[0, 0, 0, 0, 0], 
[0, 0, 0, 0, 0], 
[1, 0, 0, 0, 1], 
[0, 0, 0, 0, 0]] 
r = 3 
p = 1 
q = 4 
print ("Least Common Ancestor is:", Question4(T, r, p, q)) 
# Least Common Ancestor: 
# 3 
+0

什麼是T,r,n1和n2?那些是神祕的變量名稱,你能至少描述它們嗎? – usamec

+0

代碼沒有任何意義(它會返回'r'或者不會終止),所以我猜測它甚至從未在單個測試用例上運行過。你執行了哪些步驟來檢查「一切工作正常」? –

+0

對不起,'T'代表樹'r'的根,'n1,n2'代表兩個節點。儘管如下所述,我認爲我缺乏如何解決這個問題的基本概念。我很可能需要重新編寫它。 – NoOrangeJuice

回答

1

的一瞥後:

  1. 你的函數不使用T取代一切。無論存儲在這裏,這些信息都會被忽視。
  2. r值甚至都不會改變,所以如果函數的條件滿足,你的函數或者返回初始的r值,或者停留在無盡的while循環中。

這樣說,目前還不清楚你打算在那裏做什麼,所以我無法進一步幫助你。嘗試解決這些問題,並看看它會帶給你什麼。