inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

코딩테스트 [ ALL IN ONE ]

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

트리에 관해 질문 있습니다

해결된 질문

494

유제환

작성한 질문수 3

1

해당 코드에서 LCA에 첫번째 인자값에 배열을 넣어주는데 LCA의 함수에서 root는 left와 right를 가지고 있습니다. 무엇인가요...

python 코딩-테스트 알고리즘

답변 1

0

개발남노씨

안녕하세요 제환님.

해당 코드는 leetcode에 제출했을 때 작동되는 코드입니다. 그래서 leetcode에서는 해당 리스트가 트리 구조로 들어가게 될 거에요!

자신의 컴퓨터에서 코드를 디버깅 하고 싶다면 다음의 코드를 참고해보시길 바랄게요!!

from collections import deque


class TreeNode():
    def __init__(self, val=0):
        self.val = val
        self.left = None
        self.right = None


def array2tree(arr):
    q = deque()
    root = TreeNode(arr[0])
    q.append(root)

    idx = 1
    while idx < len(arr):
        cur_node = q.popleft()

        # left Node
        if arr[idx] != None:
            cur_node.left = TreeNode(arr[idx])
            q.append(cur_node.left)
        idx += 1

        # right Node
        if arr[idx] != None:
            cur_node.right = TreeNode(arr[idx])
            q.append(cur_node.right)
        idx += 1
    return root


def LCA(root, p, q):
    if root == None:
        return None

    left = LCA(root.left, p, q)
    right = LCA(root.right, p, q)
    if root.val == p or root.val == q: # root 가 아닌 root.val을 해줘야한다.
        return root.val
    elif left and right:
        return root.val
    return left or right

# 기존코드
# def LCA(root, p, q):
#     if root == None:
#         return None

#     left = LCA(root.left, p, q)
#     right = LCA(root.right, p, q)
#     if root == p or root == q:
#         return root
#     elif left and right:
#         return root
#     return left or right


root = array2tree([3, 5, 1, 6, 2, 0, 8, None, None, 7, 4])


print(LCA(root, 6, 4))

https://discord.com/channels/941959559759679559/1059823137753137192/1081108626938269776

0

유제환

아 이해했습니다!
답변 감사합니다! 😀

노션 공유 링크

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