2017-04-04 3 views
0

다음 코드에 문제가 있습니다. 이진 검색 트리에서 두 노드 사이에 가장 공통적 인 조상을 찾으려고합니다. 나는이 문제를 일으키는 원인을 잘 모르겠어요 코드 s, b = sorted([p.val, q.val])의이 라인에서 내 터미널 출력 AttributeError: 'int' object has no attribute 'val' 보여줍니다이 코드를 실행하려고하면'int'객체에 'val'속성이 없습니다.

def Question4(T, r, p, q): 
    s, b = sorted([p.val, q.val]) 
    while not s <= r.val <= b: 
     r = r.left if s <= r.val else r.right 
    return r 
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 
Question4(T, r, p, q) 

, 나는 고개를 비슷한 대답하지만 수 : 내가 가진 코드는 다음과 같다 해결책을 찾기. 누구든지 어떤 제안이라도 있으면 고맙겠습니다.

+1

"p"와 "q"는 정수입니다. 정수에는'val' 속성이 없습니다. 그래서 당신은'p.val'이나'q.val'을 할 수 없습니다. – Kevin

답변

2

변수 rpq에 대한 .val을 제거하고 그들과 관련된 모든 속성 val이 없습니다.

이제 어떻게 찾을 수 있습니까? 내장 기능은 dir입니다. 당신이 볼 수

>>> r = 3 
>>> dir(r) 
['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__gt__', '__hash__', '__index__', '__init__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes'] 

int 개체와 관련된 val 속성이 없습니다.

위의 문제를 해결하는 방법.

def Question4(T, r, p, q): 
    s, b = sorted([p, q]) // remove .val 
    while not s <= r <= b: // remove .val 
     r = r.left if s <= r else r.right // also int doesn't have .right or .left attribute, you need to define your own class to represent this custom data type 
    return r 
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    // this is int object which don't have val attribute 
p = 1 
q = 4 
Question4(T, r, p, q) 
+0

이 답변과 아래의 답변은 모두 정확합니다. 도와 주셔서 감사합니다. – NoOrangeJuice

1

p, qr은 정수입니다. 따라서 속성에는 val 속성이 없습니다. 그냥 모든 int 유형이 3 개