[C언어] Binary Search Tree (1) - levelOrderTraversal 함수 구현하기

2025. 4. 16. 16:59·크래프톤 정글/Code 정글(C언어)

Binary Search Tree (1) - levelOrderTraversal 함수 구현하기

이진 탐색 트리의 레벨 순서 순회를 큐를 사용하여 반복문으로 구현하고, 순회 결과를 출력하는 함수

주어진 요소 확인하기

구조체

  • BSTNode: (struct) 이진 탐색 트리 노드 구조체
    • item: (int field) 노드의 값
    • *left: (pointer field) 왼쪽 자식 노드 주소
    • *right: (pointer field) 오른쪽 자식 노드 주소
  • QueueNode: (struct) 큐 노드 구조체
    • *data: (pointer field) 이진 탐색 트리 노드 주소
    • *nextPtr: (pointer field) 다음 큐 노드 주소
  • Queue: (struct) 큐 구조체
    • *head: (pointer field) 큐 맨 앞 노드 주소
    • *tail: (pointer field) 큐 맨 뒤 노드 주소

levelOrderTraversal 함수의 매개 변수

  • *node: (pointer) 이진 탐색 트리 루트 노드 주소

 

핵심 아이디어

  • 루트 노드가 NULL이면 return
  • 큐에 루트 노드를 넣고 큐가 빌 때까지 돌아가는 반복문을 연다.
    • 큐에서 노드 하나를 꺼내고, 해당 노드의 값을 출력한다.
    • 이후 노드의 좌우 자식이 있는 경우 왼쪽 자식, 오른쪽 자식 순서대로 큐에 넣는다.

 

구현하기

// 이진 탐색 트리의 레벨 순서 순회를 큐를 사용하여 반복문으로 구현하고, 순회 결과를 출력하는 함수
void levelOrderTraversal(BSTNode* root) {
    // 트리가 비어 있으면 return
	if (root == NULL) return;

    // 임시 큐 생성 및 초기화 (동적 할당 없이 사용)
	Queue q;
	q.head = NULL;
	q.tail = NULL;

    // 루트 노드를 큐에 삽입
	enqueue(&q.head, &q.tail, root);

    // 큐가 빌 때까지 반복
	while (!isEmpty(q.head)) {
        // 큐에서 노드 하나를 꺼내기
		BSTNode *node = dequeue(&q.head, &q.tail);

        // 해당 노드의 값을 출력
		printf("%d ", node->item);

        // 왼쪽 자식이 존재하면 큐에 추가
		if (node->left)
			enqueue(&q.head, &q.tail, node->left);
        // 오른쪽 자식이 존재하면 큐에 추가
		if (node->right)
			enqueue(&q.head, &q.tail, node->right);
	}
}
저작자표시 비영리 변경금지 (새창열림)

'크래프톤 정글 > Code 정글(C언어)' 카테고리의 다른 글

[C언어] Binary Search Tree (3) - preOrderIterative 함수 구현하기  (0) 2025.04.16
[C언어] Binary Search Tree (2) - inOrderIterative 함수 구현하기  (0) 2025.04.16
[C언어] 이진 탐색 트리(Binary Search Tree) 구현 실습하기  (0) 2025.04.14
[C언어] Binary Tree (8) - hasGreatGrandchild 함수 구현하기  (0) 2025.04.14
[C언어] Binary Tree (7) - smallestValue 함수 구현하기  (0) 2025.04.14
'크래프톤 정글/Code 정글(C언어)' 카테고리의 다른 글
  • [C언어] Binary Search Tree (3) - preOrderIterative 함수 구현하기
  • [C언어] Binary Search Tree (2) - inOrderIterative 함수 구현하기
  • [C언어] 이진 탐색 트리(Binary Search Tree) 구현 실습하기
  • [C언어] Binary Tree (8) - hasGreatGrandchild 함수 구현하기
그냥사람_
그냥사람_
IT 관련 포스팅을 합니다. 크래프톤 정글 8기 정경호
  • 그냥사람_
    그냥코딩
    그냥사람_
  • 전체
    오늘
    어제
    • 글 전체보기 N
      • 크래프톤 정글 N
        • 로드 투 정글(입학시험)
        • CS기초(키워드, 개념정리)
        • 컴퓨터구조(CSAPP)
        • Code 정글(C언어)
        • Equipped in 정글(나만무) N
        • 마이 정글(WIL, 에세이) N
      • 자료구조&알고리즘
        • 자료구조
        • 알고리즘
      • 일상
  • 블로그 메뉴

    • 홈
  • 링크

    • Github
  • hELLO· Designed By정상우.v4.10.3
그냥사람_
[C언어] Binary Search Tree (1) - levelOrderTraversal 함수 구현하기
상단으로

티스토리툴바