본문 바로가기

알고리즘(C언어)/이것이 자료구조+알고리즘이다(박상현)_자료구조19

(14)[Chapter6]AVL 트리_삽입 메소드 ##중요한 핵심 부분:삽입 메소드 구현 코드 분석 :main에서 AVL트리 조립하는 방법##복습해야 될 부분 : AVL삽입메소드와 Rebalance메소드를 void반환형으로 스스로 다시 작성해보기##전체 코드123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130.. 2024. 8. 3.
(13)[Chapter6]이진 탐색 트리_삭제 메소드_비재귀/재귀(이론 + 코드) ##이진탐색트리_삭제_메소드_이론 :##이진탐색트리_삭제_메소드_비재귀,삭제_이론 + 코드 : ##이진탐색트리_삭제_메소드_재귀,삭제_이론 + 코드 :##자주 햇갈리는 개념 :★삭제 대상 노드의 자식이 2명인 경우 :1_ succ_parent 자손 지정succ_parent가 움직였을 경우 => succ_parent의 왼쪽자손을 succ의 오른쪽자손으로 업데이트succ_parent가 움직이지 않았을 경우 => succ_parent의 오른쪽 자손을 succ의 오른쪽자손으로 업데이트2_ 다른 Case와 다르게 삭제 대상 노드의 자식이 2명인 경우는 *root노드를 지우는 것이 아닌 succ노드를 지우는 것##전체 코드 :12345678910111213141516171819202122232425262728293.. 2024. 7. 25.
(12)[Chapter6]이진 탐색 트리_탐색,삽입메소드(이론 + 코드) ##이진 탐색 트리_Search()##이진 탐색 트리_Insert() (비재귀)##이진 탐색 트리_Insert() (재귀) :★삽입 재귀버전은 재귀인데도, 종료조건이 따로 없다 (굳이 있다면, 저 빈트리일때가 종료조건임)논리 순서 : 1_ 빈트리라면  : "if(*root==NULL)",2_ data가 들어갈 자리를 탐색 하면서, 재귀 호출 :##이진 탐색 트리_오름차순 출력 => 중위 순회##전체 코드 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899.. 2024. 7. 23.
(11)[Chapter6]이진 탐색(이론 + 코드) ## 이론 노트 :##핵심 내용 요약 :1_ 구현 코드에서 반띵 기준A[mid] > 탐색값 => 왼쪽으로 반띵 => end = mid -1 대입A[mid] 오른쪽으로 반띵 => start = mid +1 대입A[mid] == 탐색값 => 찾았다.=> return mid(인덱스)2_ 종료 시점까지 도달하는 경우Case1_▲ 우연히 끝까지 도달한 값 == 탐색 값 => mid 인덱스 반환Case2_  탐색값이 배열안에 없는 경우 => NULL이 반환3_ 이진 탐색 기능 : 최악의 경우 (2_상황) ※탐색횟수 = [log(2)(탐색 데이터의 수)]ex_ N = 10 , 최악의 경우의 탐색 횟수 [log(2)(10)] = [3.xxx] = 3번4_ 이진 탐색 함수 라이브러리 사용법(구조체 배열일 경우) :ⓐ... 2024. 7. 21.