inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

코딩테스트 [ ALL IN ONE ]

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

제 경우에는 이렇게 코드를 짜봤는데 이것도 맞을까요?

해결된 질문

264

Ambition

작성한 질문수 61

1

class Solution(object):
    def lowestCommonAncestor(self, root, p, q):
        if root is None: # check whether Node is empty
            return
        if root is p or root is q:
            return root
        
        # root 노드가 p 또는 q가 아니면 순회하도록 재귀함수 호출
        l = self.lowestCommonAncestor(root.left, p, q) # code 1
        r = self.lowestCommonAncestor(root.right, p, q) # code 2
        
        # p와 q 조건 검사를 마친 후(모든 노드를 순회하는 것은 아님)
        if l and r:
            return root
        elif l:
            return l
        else:
            return r

먼저 LCA함수를 호출하면 root가 가리키는 노드가 있는지 체크한 다음에 계속해서 p 또는 q 노드가 맞는지 확인을 합니다. 만약 p 또는 q 노드가 아니면 재귀함수를 호출해서 자식 노드로 더 깊이 순회하도록 만듭니다. 역시 자식 노드들도 p 또는 q 노드가 맞는지 검사한 후 맞으면 l 또는 r에 그 노드를 저장합니다.

여기서 궁금한 점은, 자기 자신이 공통 조상이 될 때인데요. 이렇게 되면 더 깊이까지 탐색하지 않아도

elif l: return l 에 의해서 왼쪽만 탐색했으니까 시간복잡도가 O(logN)인가요? 아니면 다른 케이스들도 고려해서 최악의 경우 모든 노드를 탐색해야되니까 O(N)이 되는건가요?

python 코딩-테스트 알고리즘

답변 1

1

개발남노씨

안녕하세요 Ambition님.

해당 코드는 정확하게 잘 구현하셨습니다.

질문주신건, 시간복잡도를 궁금해하셨는데, 시간복잡도는 주어진 트리의 형태와 pq의 위치에 따라 다릅니다.

일단 트리가 완전히 균형이 잡힌 이진 탐색 트리라면, 시간 복잡도는 O(logN) 이고 // 트리가 한쪽으로 치우친 연결 리스트와 같은 형태로 편향된 경우, 시간 복잡도는 O(N)이 될 수 있습니다.

0

Ambition

감사합니다 :)

노션 공유 링크

0

85

2

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

0

75

2

최신 강의와 비교

0

83

2

Min Cost Climbing stairs 질문

0

75

2

노션 공유 부탁드립니다!

1

87

2

for 문에 sort 함수 를 사용하면

1

87

2

노션 공유 부탁드립니다.

0

102

2

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

0

106

1

그래프

0

97

2

노션 공유

1

122

2

시간복잡도 질문

2

124

3

11강 질문

1

77

2

노션 공유 부탁드립니다

0

83

2

linkedList - BrowserHistory 코드 질문

0

75

1

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

1

166

1

라이브러리 사용

1

135

2

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

1

201

2

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

1

117

2

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

0

107

1

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

0

107

1

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

2

161

2

노션공유가 안된듯 합니다

1

162

2

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

1

121

1

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

1

202

1