inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

코딩테스트 [ ALL IN ONE ]

너비 우선 탐색 (Breadth-first search, BFS)

bfs 코드를 공부하면서 트리에서의 levelorder 구현 방식에 대해 질문이 있습니다.

해결된 질문

213

Ambition

작성한 질문수 61

1

from collections import deque

def levelorder(root):
    if root is None:
        return
    visited = []
    q = deque()

    q.append(root)

    while q:
        cur_node = q.popleft()
        visited.append(cur_node.val)

        if cur_node.left:
            q.append(cur_node.left)
        if cur_node.right:
            q.append(cur_node.right)
    return visited

levelorder 코드는 위와 같은데요. 여기서 q.append(root) 를 bfs 코드와 같이 사전에 queue = deque(root)로 미리 넣어줘도 되지 않나요? 이렇게하면 오히려 q.append(root)를 하는데 걸리는 런타임을 더 줄일 수 있을 것 같아서요

python 코딩-테스트 알고리즘

답변 1

0

개발남노씨

안녕하세요 ambition님

 

미리 넣어줄 수 있으면 넣어주셔도 됩니다. 간혹 deque 생성자의 인자값으로 튜플을 못 넣는다던가 여러가지 예기치 못한 에러가 발생해서 일부로 단계를 나눠서 append를 해줬습니다.

그리고, 런타임을 그렇게 나노단위로 낮출필요는 없습니다 ㅎㅎ

전체적인 시간복잡도를 계산해서 결정하는게 좋습니다.

좋은 의견 감사합니다. :)

0

Ambition

아 그렇군요 답변 감사합니다 🙂 어디서 append하는데 연산속도가 느려진다는 글을 보아서요

일단 커리대로 따라간 다음, 문제를 풀면서 시간복잡도를 고려해서 스스로 판단해봐야겠습니다

노션 공유 링크

0

87

2

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

0

78

2

최신 강의와 비교

0

85

2

Min Cost Climbing stairs 질문

0

76

2

노션 공유 부탁드립니다!

1

88

2

for 문에 sort 함수 를 사용하면

1

90

2

노션 공유 부탁드립니다.

0

104

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

136

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

163

2

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

1

122

1

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

1

204

1