이진트리 순회(깊이우선탐색)
아래 그림과 같은 이진트리를 전위순회와 후위순회를 연습해보세요.
전위순회 출력 : 1 2 4 5 3 6 7
중위순회 출력 : 4 2 5 1 6 3 7
후위순회 출력 : 4 5 2 6 7 3 1
전위 순회
def DFS(v):
if v>7:
return
else:
print(v) # 본래 함수의 일을 먼저 한다. 전위순회
DFS(v*2)
DFS(v*2+1)
if __name__=="__main__":
n = int(input())
DFS(n)
중위 순회
def DFS(v):
if v>7:
return
else:
DFS(v*2)
print(v) # 본래 함수의 일을 중간에 한다. 중위순회
DFS(v*2+1)
if __name__=="__main__":
n = int(input())
DFS(n)
후위 순회
def DFS(v):
if v>7:
return
else:
DFS(v*2)
DFS(v*2+1)
print(v) # 본래 함수의 일을 마지막에 한다. 후위순회
if __name__=="__main__":
n = int(input())
DFS(n)
스택
D(8)-종료
D(4)-6라인
D(2)-6라인
D(1)-6라인
스택 프레임이 어떻게 쌓이는지 생각해보기
'⏰ 코딩테스트 > BFS, DFS' 카테고리의 다른 글
합이 같은 부분집합(DFS : 아마존 인터뷰) (0) | 2021.10.28 |
---|---|
부분집합 구하기(DFS) (0) | 2021.10.28 |
재귀함수를 이용한 이진수 출력 (0) | 2021.10.27 |
재귀함수와 스택 작동 원리 (0) | 2021.10.26 |