트리에 관해 질문 있습니다
해당 코드에서 LCA에 첫번째 인자값에 배열을 넣어주는데 LCA의 함수에서 root는 left와 right를 가지고 있습니다. 무엇인가요...
답변 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
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





