55,000원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 해결됨그림으로 쉽게 배우는 자료구조와 알고리즘 (심화편)
AVL 트리 회전 질문
안녕하세요. 선생님~[AVL트리 - 개념] 강의 - 회전 관련 질문있습니다.7:00 즈음LL회전, RR회전 펼져있는 노드 이미지가 반대로 된것 아닌지? 궁금합니다.헷갈려서 검색해보니LL이라는 용어가 회전할 기준이 되는 노드의 왼쪽 노드, 그 다음 왼쪽 노드형태에서 오른쪽으로 회전해서 균형을 맞추자!로 대체적으로 설명이 되어있는것같습니다.(이미지로는 왼쪽으로 쭉 내려가는 이미지)위키백과에는 따로 LL,RR이라는 용어설명이 없어서, 블로그 글들 참조하였습니다.뭔가 관점 차이인 부분일까요?
- 미해결그림으로 쉽게 배우는 자료구조와 알고리즘 (심화편)
레드플랙트리의높이
닐노드기준으로 21을가려면 HEIGHT가 2아닌가요? 왜 4인가요? 가는 통로가 따로 있나요? Red-Black 트리 - 개념(제거) 10분에서Red-Black 트리 - 개념(제거)에서 15노드를 제거하면 닐이 바깥쪽 조카노드가 아니라 형제노드가 되는거 아닌가요? 21닐 30(형제노드) 25(안쪽조카노드)
- 해결됨그림으로 쉽게 배우는 자료구조와 알고리즘 (심화편)
Red-Black 트리 제거 2번째
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 사진은 Red-Black 트리 제거 2번째 예시입니다. 이렇게 끝나면 Red-Black 트리가 안되지 않나요...?3이 빨강이거나, 10이 검은색이어야 5번 규칙에 따라 Black-Height가 맞지 않나요?이해가 잘 되지 않습니다... ㅠㅠ
- 해결됨그림으로 쉽게 배우는 자료구조와 알고리즘 (심화편)
Red-Black 트리 - 개념(제거) 질문드립니다.
이미지에서 보면 레드노드가 제거되고나서 블랙노드만 남은 상황입니다. 영상을 보면 레드노드가 제거되어서 레드블랙 규칙을 어기지 않는다고 표현을 하는데요.이미지를 봤을 때, 5에서 시작해서 NIL 노드까지 가는 구간에 높이가 제 생각에는 다르다는 생각이 들어서 질문드립니다.5-3-NIL5-7-NIL5-7-10-NIL이렇게 NIL노드로 간다고 가정하면 5-7-10-NIL 노드경로만 길이가 다르다고 생각하는데 규칙이 깨진것 아닌가요? 이해가 잘 안되어요 ㅠ
- 해결됨그림으로 쉽게 배우는 자료구조와 알고리즘 (심화편)
이진 탐색 트리 - 제거 구현 질문드립니다.
자식 노드가 모두 존재하는 경우에 제거하는 경우의 수 중에서제일 마지막 fakeParentRootNode 를 처리하는 부분에서 질문이 있습니다.제거를 할 때 값을 변경하는 방식으로 진행하다보니 루트노드가 제거가 된다고 하더라도 fakeParentRootNode의 오른쪽 자식노드는 계속해서 root 노드의 주소값을 바라보고 있을 것이고, 변경사항이 없을텐데 해당 코드를 넣는 이유가 있을까요?if (fakeParentRootNode.getRightSubTree() !== this.root) { this.root = fakeParentRootNode.getRightSubTree(); }
- 해결됨그림으로 쉽게 배우는 자료구조와 알고리즘 (심화편)
BFS 질문 있습니다.
let visited_vertices = []; visited_vertices[vertex.value] = true;BFS에서 visited_vertices를 위처럼 배열로 설정하신 이유가 따로 있나요?? 동작은 하는 것 같은데, 콘솔찍어서 보니까 배열에 저렇게 담겨져 있는게 뭔가 어색하기도 하고 DFS에서는 객체로 하셨더라구요. [ Ben: true, Jake: true, Ivy: true, Anna: true, David: true, Joy: true, Elin: true, Owen: true ]
- 해결됨그림으로 쉽게 배우는 자료구조와 알고리즘 (심화편)
else if 질문 있습니다.
힙 삽입에서 getInsertingParent(){ if(this.lastInsertedNode.getParent() == null){ return this.lastInsertedNode; }else{ if(this.lastInsertedNode == this.lastInsertedNode.getParent().getLeftSubTree()){ return this.lastInsertedNode.getParent(); }else{ let current = this.lastInsertedNode; let firstRightSibling = null; while(current.getParent().getParent() != null){ current = current.getParent(); firstRightSibling = this.getRightSibling(current); if(firstRightSibling != null){ break; } }마지막으로 삽입된 노드가 루트노드일때를 if문으로 처리하시고 그다음 else 안에 서 if문으로 다시 처리하셨는데 이유가 있을까요? else if로 안쓰시고 else 안에서 if를 쓰신 이유가 궁금합니다..!!
- 해결됨그림으로 쉽게 배우는 자료구조와 알고리즘 (심화편)
이진 탐색 트리 - 제거 구현 질문 있습니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 노드를 삭제할 때 자식 노드가 양쪽 다 있는 경우의 코드중 일부분 입니다.if (replacingNodeParent.getLeftSubTree() == replacingNode) { replacingNodeParent.setLeftSubTree(replacingNode.getLeftSubTree()); } else { replacingNodeParent.setRightSubTree(replacingNode.getLeftSubTree()); } 위 코드에서 replacingNode는 해당 트리중 가장 큰 값이니까 무조건 replacingNodeParent의 오른쪽 자식일 것 같아서 아래와 같이 작성해도 될 것 같은데 혹시 제가 생각하지 못한 다른 케이스가 있을까요?replacingNodeParent.setRightSubTree(replacingNode.getLeftSubTree());