본문 바로가기

알고리즘(C언어)40

(15)[Chapter6]AVL 트리_삭제 메소드(작성중) ##노트정리##중요 핵심 개념 :    AVL트리_Delete() 구현 논리 순서 :해당 노드에서 최솟값 노드 탐색 메소드Delete()메소드 구현 논리순서 :종료조건 : 빈노드 도달 || 처음부터 빈트리 => 종료탐색 : 재귀삭제대상 찾았을 때, Case 분류 (2가지 : 0,1차 || 2차) Case_1) 삭제대상 (0,1차) => *root를 temp에 보관, *root를 자손에 이동 , temp 메모리 해제Case_2) ★삭제대상 (2차)=> *root의 오른쪽노드부터 최솟값노드 탐색=> 최솟값 노드를 temp에 보관(지정)=> temp노드의 data를 *root노드에 data 업데이트=> ★삭제대상의 오른쪽부터 temp->data의 노드를 Delete() 재귀삭제대상 노드자리부터 쭈르르 위로 R.. 2024. 8. 4.
(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.