inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Cấu trúc dữ liệu và giải thuật học dễ dàng bằng hình ảnh (Nâng cao)

Cây tìm kiếm nhị phân - Thực hiện loại bỏ

이진 탐색 트리 - 제거 구현 질문드립니다.

Đã giải quyết

448

hyu6301151506

5 câu hỏi đã được viết

1

자식 노드가 모두 존재하는 경우에 제거하는 경우의 수 중에서

제일 마지막 fakeParentRootNode 를 처리하는 부분에서 질문이 있습니다.

제거를 할 때 값을 변경하는 방식으로 진행하다보니 루트노드가 제거가 된다고 하더라도 fakeParentRootNode의 오른쪽 자식노드는 계속해서 root 노드의 주소값을 바라보고 있을 것이고, 변경사항이 없을텐데 해당 코드를 넣는 이유가 있을까요?

if (fakeParentRootNode.getRightSubTree() !== this.root) {
   this.root = fakeParentRootNode.getRightSubTree();
}

알고리즘

Câu trả lời 1

1

gamja5

루트노드가 18, 왼쪽 자식노드가 15 하나 있는 트리로 가정해보겠습니다.

만약 루트노드(18)를 삭제하는 경우 else if문(자식 노드가 1개 있는 조건문)이 실행됩니다.
이 조건문에서는 아래 코드와 같이 자식 노드를 값이 아닌 주소를 바꿉니다.

        }else if(deletingNode.getLeftSubTree() == null || deletingNode.getRightSubTree() == null){
            let deletingNodeChild;

            if(deletingNode.getLeftSubTree() != null){
                deletingNodeChild = deletingNode.getLeftSubTree();
            }else{
                deletingNodeChild = deletingNode.getRightSubTree();
            }

            if(parentNode.getLeftSubTree() == deletingNode){
                parentNode.setLeftSubTree(deletingNodeChild); 
            }else{
                parentNode.setRightSubTree(deletingNodeChild); // fakeParentRootNode의 오른쪽 자식노드가 15인 노드가 됨.
            }

 

따라서 해당 케이스에 바뀐 루트노드를 다시 설정하는 것입니다.

궁금증이 해결되셨나요? 😀

1

hyu6301151506

감사합니다! 해결되었습니다.

선택정렬 이해하기 & 구현하기

0

8

1

링크드 리스트 중간 삽입삭제 시간복잡도 질문

0

28

1

재귀함수 종료조건

0

27

1

백준 서비스 종료로 인한 강의 자료 업데이트 요청드립니다.

0

37

1

백준 사이트 준비중이라 문제를 볼 수 가 없어요

0

52

1

힙 삽입의 케이스 관련해서 질문이 있습니다.

1

90

2

반복문의 기저조건(while)/경계조건(for)을 빠르게 설정하는 방법이 있을까요?

1

77

1

이진탐색트리/AVL트리/RB트리를 바라보는 관점

1

104

2

Red-Black 트리 - 개념 (삽입) 4분 48초에 21의 높이의 값이 설명과 그림이 다른거 같습니다.

0

64

2

최대 유량 문제(포드 풀커슨 알고리즘)

0

150

2

Trie 자료구조 관련 질문

0

109

2

RedBlack 구현 중 NilNode에 대해서

1

92

2

터미널노드는 루트노드?

0

148

2

트리의 조건이 헷갈립니다.

0

80

1

AVL 트리 구현 중 getUnBalanceNode 함수

0

170

2

AVL 트리에서 회전 실행 함수 구현 시 질문

0

160

2

레드블랙트리 개념 4:20초에 13번 노드는 Nill 노드와 연결되면 안되는 것 아닌가요?

0

200

1

data 매개변수 오류

1

261

1

AVL 트리 회전 질문

1

465

1

레드플랙트리의높이

1

310

1

Red-Black 트리 제거 2번째

1

339

2

Red-Black 트리 - 개념(제거) 질문드립니다.

1

523

1

BFS 질문 있습니다.

1

264

1

else if 질문 있습니다.

1

393

2