공부/전반적인 프로그래밍

파이썬 자료구조 - 트리:레벨

김빼로 2022. 5. 2. 09:26

전 포스팅에서 레벨은 깊이가 같은 노드들을 의미했다.

이번 시간에는 앞서 구했던 높이를 가지고 같은 레벨의 노드들을 구하려고 한다.

 

기본적인 과정은 이러하다.

1. 루트 노드와 알고 싶은 레벨을 설정한다.

2. 루트에서 하위 노드들로 내려오며 레벨-1을 한다.

3. 레벨이 1이 되면 현재의 노드들을 출력한다.

 

아래 코든 전체 레벨을 구하기 위한 코드이고 특정 레벨만 알고 싶으면 3번째 줄의 for문을 이하를 수정하면 된다.

def level(self):
  h = self.height(self.root)
  for i in range(1,h+1):
    self._level(self.root,level)
    print()

def _level(self, node, level):
  if node is None:
    return
  
  if level ==1:
    print(node.item, end=' ')

  else:
    self._level(node.left,level-1)
    self._level(node.rigt, level-1)