카테고리 없음

NeetCode 20번 알고리즘 : Breadth-First Search

코테챌린져 2024. 7. 9. 06:03

Algorithm

 

Code

def bfs(root):
    queue = deque()

    if root:
        queue.append(root)
    
    level = 0
    while len(queue) > 0:
        print("level: ", level)
        for i in range(len(queue)):
            curr = queue.popleft()
            print(curr.val)
            if curr.left:
                queue.append(curr.left)
            if curr.right:
                queue.append(curr.right)
        level += 1

 

만약, level을 keep track 하지 않아도 되는 경우는 다음과 같은 코드도 가능하다. (하지만 문제를 풀어보니 대부분 level을 track 하는게 많았다.

def bfs(root):
    queue = deque()

    if root:
        queue.append(root)
    
    while len(queue) > 0:
        curr = queue.popleft()
        print(curr.val)
        if curr.left:
            queue.append(curr.left)
        if curr.right:
            queue.append(curr.right)

 

Time Complexity

O(n)