본문 바로가기
자료구조및알고리즘

(Python/이진트리)이진트리(2)

by windy7271 2022. 12. 1.
728x90
반응형

2) 넓이 우선 순회

원칙 

  • - 수준이 낮은 노드를 우선으로 방문
  • - 같은 수준의 노드들 사이에는 부모 노드 방문순서에 따라 방문 왼쪽이 오른쪽보다 우선
  • dfs 와 유사

재귀적 비효율

 

한 노드를 방문할때 나중에 방문할 노드들은 순서대로 기록해둬야함  >>  큐(queue) 사용

 

스택에 a ,b, c 순서로 들어가고 내려갈 자식노드가 없으면 큐에스 팝해주고 하는식

 

구현 문제

 

import queue
class ArrayQueue:

    def __init__(self):
        self.data = []

    def size(self):
        return len(self.data)

    def isEmpty(self):
        return self.size() == 0

    def enqueue(self, item):
        self.data.append(item)

    def dequeue(self):
        return self.data.pop(0)

    def peek(self):
        return self.data[0]


class Node:

    def __init__(self, item):
        self.data = item
        self.left = None
        self.right = None


class BinaryTree:

    def __init__(self, r):
        self.root = r


    def bft(self):
        traverse = []
        q = ArrayQueue()

        if self.root:
            q.enqueue(self.root)

        while q.size()!=0:
            information = q.dequeue()
            traverse.append(information.data)

            if information.left:
                q.enqueue(information.left)
            if information.right:
                q.enqueue(information.right)
        return traverse



def solution(x):
    return 0

 

 

반응형

댓글