이진탐색트리 검색 추가 삭제

2022. 12. 7. 19:20·정리 전 게시글/공부 관련
TNode* search(TNode* n, int key) {
    if (n == NULL) return NULL;
    else if (key == n->data) return n;
    else if (key < n->data) return search(n->left, key);
    else return search(n->right, key);
}
int insert(TNode* r, TNode* n) {
    if (n->data == r->data) return 0;
    else if (n->data < r->data) {
        if (r->left == NULL) r->left = n;
        else insert(r->left, n);
    }
    else {
        if (r->right == NULL) r->right = n;
        else insert(r->right, n);
    }
    return 1;
}
void delete(TNode* parent, TNode* node) {
    TNode* child, * succ, * succp;
    // case 1
    if ((node->left == NULL && node->right == NULL)) {
        if (parent == NULL) root = NULL;
        else {
            if (parent->left == node) {
                parent->left = NULL;
            }
            else {
                parent->right = NULL;
            }
        }
    }
    // case 2
    else if (node->left == NULL || node->right == NULL) {
        child = (node->left != NULL) ? node->left : node->right;
        if (node == root) root = child;
        else {
            if (parent->left == node) {
                parent->left = child;
            }
            else {
                parent->right = child;
            }
        }
    }
    // case 3
    else {
        succp = node;
        succ = node->right;
        while (succ->left != NULL) {
            succp = succ;
            succ = succ->left;
        }
        if (succp->left == succ) {
            succp->left = succ->right;
        }
        else {
            succp->right = succ->right;
        }
        node->data = succ->data;
        node = succ;
    }
    free(node);

}
저작자표시 (새창열림)

'정리 전 게시글 > 공부 관련' 카테고리의 다른 글

[프로그래머스 Level 1, Java] 크기가 작은 부분문자열  (0) 2023.01.12
Dodge : Avoid Balls 비주얼베이직 게임 만들기 공피하기 게임  (0) 2022.12.22
두근두근 자료구조 8장 연습문제  (0) 2022.12.05
이진트리  (0) 2022.12.05
연결리스트를 이용한 다항식을 계산하고 사용자가 입력한 문자열을 파싱하는 Polynominal 코드 만들기  (0) 2022.11.29
'정리 전 게시글/공부 관련' 카테고리의 다른 글
  • [프로그래머스 Level 1, Java] 크기가 작은 부분문자열
  • Dodge : Avoid Balls 비주얼베이직 게임 만들기 공피하기 게임
  • 두근두근 자료구조 8장 연습문제
  • 이진트리
aptenia
aptenia
공부하면서 배운 것들
  • aptenia
    새벽의 아이디어
    aptenia
  • 전체
    오늘
    어제
    • 분류 전체보기 (279)
      • 논문 (0)
      • Roboracer (2)
      • 개발 아무거나 (1)
      • 일상 아무거나 (2)
      • 정리 전 게시글 (268)
        • 개발 관련 (25)
        • 정보 관련 (19)
        • 공부 관련 (224)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 네이버 블로그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    안드로이드
    티스토리반응형2스킨편집
    프로그래머스PCCE
    C언어
    자바
    콜라츠추측
    캡스톤디자인
    마크
    마인크래프트스크립트
    티스토리HTML
    백준
    파이썬
    이것이자바다
    일본규슈공업대학교
    C언어강좌
    파이어베이스
    c언어초보
    이것이자바다연습문제
    컨텍스트스위칭
    빅데이터공모전
    마크스크립트
    공개SW개발자대회
    티스토리스킨편집
    마인크래프트
    마인크래프트강화스크립트
    이것이자바다확인문제
    프로그래머스
    반복하지않는수
    C++강좌
    스크롤바CSS
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
aptenia
이진탐색트리 검색 추가 삭제
상단으로

티스토리툴바