inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

코딩테스트 [ ALL IN ONE ]

[코테 적용] 👉 Postorder (후반부)

root == p 를 비교하는법?

해결된 질문

361

코딩먹는하마

작성한 질문수 74

2

강사님의 풀이방법을 보면

class Solution(object):
    def lowestCommonAncestor(self, root, p, q):
      
        left = self.lowestCommonAncestor(root.left, p, q)
        right = self.lowestCommonAncestor(root.right, p, q)
        if root == p or root == q:
            return root
        elif left and right:
            return root
        return left or right

여기서 root.value == p가 아니라 어떻게 root == p로 비교할 수 있는 지 궁금합니다.

아래는 제가 푼 방식입니다.

class Node:
    def __init__(self, value=0, left=None, right = None):
        self.value=value
        self.left= left
        self.right = right

def LCA(root,p,q):
    if root is None:
        return None
    left = LCA(root.left,p,q)
    right = LCA(root.right,p,q)
    if root.value == p or root.value ==q:
        return root
    elif left and right:
        return root
    return left or right

root=[3,5,1,6,2,0,8,None,None,7,4]
root = Node(value = 3)
root.left = Node(value = 5)
root.right = Node(value = 1)
root.left.left = Node(value = 6)
root.left.right = Node(value = 2)
root.right.left = Node(value = 0)
root.right.right = Node(value = 8)
root.left.right.left = Node(value = 7)
root.left.right.right = Node(value = 4)

root= LCA(root,5,6)
print(root.value)

 

  if root.value == p or root.value ==q:
        return root

저는 여기서 root == p 를 하게 되면 아래 오류가 발생합니다.

AttributeError: 'NoneType' object has no attribute 'value'

 

답변주시면 정말 감사하겠습니다.

python 코딩-테스트 알고리즘

답변 1

0

개발남노씨

안녕하세요 코먹하님

코먹하님께서 제대로 코드 구현을 하셨습니다.

제 코드의 경우에는 leetcode의 채점시스템상에서 잘 작동하더라구요.

 

image리트코드에서 input 값으로 주어지는 것들이([3, 5, 1 , ..] p = 5, p =1) 이런 값들이 int형 값이 아니라, node를 지칭하는 겁니다.

 

그래서 아마 코먹하님의 코드

root.val == p 

이게 오히려 작동하지 않을거에요

root == p 

이렇게 코드를 작성해야 될겁니다. 같은 노드를 가리키나봐요.

 

또는 이게 좀 더 정확하겠죠.

root.val == p.val

 

저도 혼자 테스트케이스를 작성해서 코드를 작성할 때에는 코먹하님과 같은 형태로 코드를 작성했습니다.

image

 

학습에 참고하시길 바랄게요 :)

또 궁금하신점 있으시면 어제든 질문주세요!

노션 공유 링크

0

90

2

수업 중간에 내주신 문제는 해답을 알 수 없는걸까요?

0

79

2

최신 강의와 비교

0

86

2

Min Cost Climbing stairs 질문

0

77

2

노션 공유 부탁드립니다!

1

88

2

for 문에 sort 함수 를 사용하면

1

90

2

노션 공유 부탁드립니다.

0

105

2

디스코드가 올바르지 않다고 뜹니다..!

0

107

1

그래프

0

98

2

노션 공유

1

123

2

시간복잡도 질문

2

125

3

11강 질문

1

78

2

노션 공유 부탁드립니다

0

84

2

linkedList - BrowserHistory 코드 질문

0

76

1

list1.append(list2)와 list1.append(list2[:])의 차이가 무엇인가요?

1

168

1

라이브러리 사용

1

137

2

문제 교재는 따로 없는 거 맞나요?

1

202

2

LCA 관련해서 질문이 있습니다.

1

118

2

[Unique Paths] 완전탐색 / DP (후반부)

0

108

1

dp 계단오르기최소비용질문입니다.

0

109

1

Dynamic Array 의 size 정보가 저장되는 곳

2

161

2

노션공유가 안된듯 합니다

1

165

2

[코테 적용] 👉 [3번 문제] 완전탐색 (DFS, BFS) (전반부)

1

122

1

강의자료 만들 때 사용하신 프로그램이 뭘까요?

1

204

1