coding test - python/기본기 문제

문제 / 이진 트리 순회(깊이 우선 탐색) / Python 파이썬

sillon 2022. 8. 3. 21:51
728x90
반응형

 

문제 제목: 이진 트리 순회(깊이 우선 탐색)

 


개념

  • 전위 순회 방식: 함수 출력시 부모 -> 왼쪽 자식 -> 오른쪽 자식 순서로 출력
  • 중위 순회 방식: 함수 출력시 왼쪽 자식 -> 부모 -> 오른쪽 자식 순서로 출력
  • 후위 순회 방식: 함수 출력시 왼쪽 자식 -> 오른쪽 자식 - >부모  순서로 출력

1. 전위 순회 방식

함수 출력시 부모 -> 왼쪽 자식 -> 오른쪽 자식 순서로 출력

def DFS(v):
    if v>7:
        return
    else:  
        print(v, end=' ')
        DFS(v*2)
        DFS(v*2+1)
        
if __name__=="__main__":
    DFS(1)

2. 중위 순회 방식

함수 출력시 왼쪽 자식 -> 부모 -> 오른쪽 자식 순서로 출력

def DFS(v):
    if v>7:
        return
    else:  
        DFS(v*2)
        print(v, end=' ')
        DFS(v*2+1)
        
if __name__=="__main__":
    DFS(1)

 

3. 후위 순회 방식

함수 출력시 왼쪽 자식 -> 오른쪽 자식 - >부모  순서로 출력

def DFS(v):
    if v>7:
        return
    else:  
        DFS(v*2)
        DFS(v*2+1)
        print(v, end=' ')
        
if __name__=="__main__":
    DFS(1)

대표적으로 병합정렬이 있음

왼쪽 자식 처리 후 오른쪽 자식 처리 후 부모(본인) 처리

이제 더이상 더 갈 수가 없으니 DFS(4)는 pop되어 반환됨 그리고나서 D(5) 순회

 


※ 알아야 할 것

- 재귀함수는 모두 DFS라고 칭함. 

 

- 링크 게시글을 모두 이해했으면 쉽게 이 글도 이해할 수 있을 것임

 https://sillon-coding.tistory.com/211

 

[자료구조] 재귀 함수와 스택 / 파이썬 Python

정보들이 다 기록되며 진행된다. DFS(3)을 호출하면 Stack에 해당 내용이 저장이됨 호출되는 순간 DFS(2)가 호출됨 그리고 해당 x=2에대한 내용이 Stack에 새로 할당되어 저장이됨 그럼 이제 DFS(1)함수

sillon-coding.tistory.com

 

728x90
반응형