2017-04-06 76 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循环中。

这样说,目前还不清楚你打算在那里做什么,所以我无法进一步帮助你。尝试解决这些问题,并看看它会带给你什么。