Data Structure


레드-블랙 트리자가 균형 이진 트리.모든 노드는 빨간색 또는 검은색이다.루트 노트든 검은색이다.모든 리프노드들은 검은색이다.(NIL : Null Leaf, 자료를 갖지 않고 트리의 끝을 나타내는 노드)빨간색 노드의 자식은 검은색이다. = 빨간색 노드가 연속으로 나올 수 없다.모든 리프노드에서 Black Depth는 같다. = 리프노드에서 루트노드까지 가는 경로에서 만나는 검은색 노드의 개수가 같다.Java의 HashMap 사이즈가 64가 넘을 때에 레드 블랙트리를 사용하고 TreeMap 또한 레드 블랙트리를 사용레드-블랙 트리 삽입 과정새로운 노드는 항상 빨간색으로 삽입한다. = 빨간색 노드가 연속으로 2번 나타날 수 있다.삼촌 노드가 검은색이라면 -> RestructuringN, P, G를 오름차순으로..


B-Tree(Balanced Tree)자식 2개 만을 갖는 이진 트리를 확장하여 N개의 자식을 가질 수 있도록 고안된 것.좌우 자식 간의 균형이 맞지 않을 경우에는 매우 비효율적이라, 항상 균형을 맞춘다는 점에서 균형 트리라고 불린다.최상위에는 단 하나의 노드 존재 = 루트 노드, 중간 노드를 브랜치 노드, 최하위 노드를 리프 노드라고 한다. Page디스크와 메모리(버퍼풀)에 데이터를 읽고 쓰는 최소 작업 단위.일반적인 인덱스를 포함해 PK와 테이블 등은 모두 페이지 단위로 관리된다.따라서 만약 쿼리를 통해 1개의 레코드를 읽고 싶더라도 결국은 하나의 블록을 읽어야 하는 것이다.그래서 페이지에 저장되는 개별 데이터의 크기를 최대한 작게 하여, 1개의 페이지에 많은 데이터들을 저장할 수 있도록 하는 것이 ..


알고리즘 문제 '나무 재테크' 백준-16235 문제를 풀다가 PriorityQueue를 이용할 일이 생겼다. 앞으로 줄여서 pq라고 하겠다. 푸는 과정에서, pq에 있는 값들을 모두 조회해야 하는 일이 발생했다. 처음에는 일반적인 반복문인 for(int i = 0; i < pq.size(); i++)를 이용해 pq.get(index)를 하려고 했다. 앞으로 fori문이라 하겠다. 하지만 pq는 get() 메서드를 가지고 있지 않았고, poll(), peek(), element() 등만 가졌을 뿐이라. 인덱스로 전체를 조회하는게 불가능하단 것을 알았다. 하지만 뭔가 향상된 for문은 될 것 같은 느낌이 들어서 이용해봤더니 pq 내부 모든 요소에 조회가 가능했다 ! 궁금증이 들었다. 그동안 fori나 for..