[CS50] 연결리스트 : 트리

제리·2022년 6월 18일
0

CS50

목록 보기
10/13

이진 검색 트리


이진 검색 트리는 하나의 노드가 두개의 자식노드를 가지며, 왼쪽의 자식노드는 자신의 값보다 작고, 오른쪽의 자식 노드는 자신의 값보다 크다.
이러한 트리 구조는 이진 검색을 수리하는데 유리하다.

50을 재귀적으로 검색하는 이진 검색 함수

//이진 검색 트리의 노드 구조체
typedef struct node
{
    // 노드의 값
    int number;

    // 왼쪽 자식 노드
    struct node *left;
 
   // 오른쪽 자식 노드
    struct node *right;
} node;

// 이진 검색 함수 (*tree는 이진 검색 트리를 가리키는 포인터)
bool search(node *tree)
{
    // 트리가 비어있는 경우 ‘false’를 반환하고 함수 종료
    if (tree == NULL)
    {
        return false;
    }
    // 현재 노드의 값이 50보다 크면 왼쪽 노드 검색
    else if (50 < tree->number)
    {
        return search(tree->left);
    }
    // 현재 노드의 값이 50보다 작으면 오른쪽 노드 검색
    else if (50 > tree->number)
    {
        return search(tree->right);
    }
    // 위 모든 조건이 만족하지 않으면 노드의 값이 50이므로 ‘true’ 반환
    else {
        return true;
    }
}
profile
iOS 준비중

0개의 댓글