본문 바로가기
카테고리 없음

[알고리즘] 순회(전위 순회, 중위 순회, 후위 순회)

by MY블로그 2023. 4. 27.

이진탐색트리의 추가 부분 입니다.

 

[알고리즘] 이진탐색트리

이진탐색트리? 이진 방식의 탐색을 하기 위한 구조 입니다. 이진탐색트리에서 모든 노드는 아래의 규칙을 가지고 있습니다. 모든 노드의 key는 중복이 되지않습니다. 왼쪽방향의 자식 노드는 부

rhksgml78.tistory.com

 

1. 전위 순회 (Preorder Traversal)

함수내에서 재귀로 내려가기전 출력합니다. (두개의 서브트리 순회 전)

 

1. 현재 노드를 출력(처리).

2. 왼쪽 노드를 방문

3. 오른쪽 노드를 방문

전위 순회 탐색 순서 : 8 3 1 6 4 7 10 14 13

void BST_PreOrder(Node* tree, vector<int>& pre) // 전위순회
{
    if (tree == NULL) // 재귀함수는 항상 탈출조건이 위에있어야함
        return;
    pre.push_back(tree->data); // 출력
    BST_PreOrder(tree->leftChild, pre);
    BST_PreOrder(tree->rightChild, pre);
}

2. 중위 순회 (Inorder Traversal)

왼쪽 서브트리 순회를 끝내고 돌아온 후 출력 후 오른쪽 서브트리로 순회

이진 검색 트리를 "중위 순회" 한다면 순서대로 정렬되어 출력 할 수 있다!

얼마전 중위 순회와 같은 구조로 하노이탑을 배웠다!

 

1. 왼쪽 노드를 방문

2. 현재 노드를 출력(처리)

3. 오른쪽 노드를 방문

중위 순회 탐색 순서 : 1 3 4 6 7 8 10 13 14

void BST_InOrder(Node* tree, vector<int>& in) // 중위순회
{
    if (tree == NULL) // 재귀함수는 항상 탈출조건이 위에있어야함
        return;
    BST_PreOrder(tree->leftChild, in);
    in.push_back(tree->data); // 출력
    BST_PreOrder(tree->rightChild, in);
}
 

[알고리즘/C++]하노이탑알고리즘

재귀함수를 이용하는 하노이탑 알고리즘에 대해 공부하였다. 하노이탑 알고리즘은 재귀적인 방법을 이용해 구현할 수 있다. 하노이탑 문제의 규칙 세 개의 기둥이 있고, 첫 번째 기둥에는 크기

rhksgml78.tistory.com


3. 후위 순회 (Postorder Traversal)

왼쪽 서브트리 순회를 마친 뒤, 오른쪽 서브트리 순회까지 끝내고 출력 한다.

즉, 모든 순회를 마친뒤 출력

 

1. 왼쪽 노드를 방문

2. 오른쪽 노드를 방문

3. 현재 노드를 출력(처리)

후위 순회 탐색 순서 : 1 4 7 6 3 13 14 10 8

void BST_PostOrder(Node* tree, vector<int>& pos) // 후위순회
{
    if (tree == NULL) // 재귀함수는 항상 탈출조건이 위에있어야함
        return;
    BST_PreOrder(tree->leftChild, pos);
    BST_PreOrder(tree->rightChild, pos);
    pos.push_back(tree->data); // 출력
}

 

댓글