๐ข์ด๋ฒ ๊ธ์์๋ ์๋ฐ ์ธ์ด๋ก ํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๊ตฌํํ๋๋ฐ ์ด์ ์ ๋ง์ถ ๊ฒ์ด๋, ํ ์๋ฃ๊ตฌ์กฐ์ ๋ํ ์์ธํ ๋ด์ฉ์ ํ(ํ์ด์ฌ ๋ฒ์ )์ ์ฐธ๊ณ ํ์ธ์.

์ฐ์ ์์ ํ ๋ง์ง๋ง ๊ณต๊ฐ์ 7์ ๋ฃ์ผ๋ฉด

7์ด ํฌํจ๋ subtree์์ ๋ถ๋ชจ ๋
ธ๋์ ๊ฐ์ ๋น๊ตํ๊ณ , ์์ ๋
ธ๋๊ฐ ๋ถ๋ชจ ๋
ธ๋๋ณด๋ค ๊ฐ์ด ์์ผ๋ฏ๋ก(์ฐ์ ์์๊ฐ ํผ) ์๋ก ์ค์์ ํ๋ค.
์๋ฐ์ ์ ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์๋์ ๊ฐ์ด ๊ฐ๋จํ๊ฒ ๊ตฌํํ ์ ์๋ค.
package src;
import java.util.*;
public class Main {
public static void main(String[] args) {
PriorityQueue<Integer> pq = new PriorityQueue<>();
pq.offer(1);
pq.offer(10);
pq.offer(8);
pq.offer(17);
pq.offer(25);
pq.offer(16);
pq.offer(7);
for (Integer i : pq) {
System.out.println(i); // 1 10 7 17 25 16 8
}
}
}
Collections.reverseOrder() ๋ฉ์๋๋ฅผ new ์ธ์์ ๋ฃ์ผ๋ฉด ๋๋ค.add() ๋ฉ์๋๋ ์์ง๋ง, Queue ์ธํฐํ์ด์ค๋ฅผ ๊ทธ๋๋ก ๊ตฌํํ ํด๋์ค๊ฐ PriorityQueue์ด๋ฏ๋ก ๋ฉ์๋์ ์ผ๊ด์ ์ฌ์ฉ์ ์ํด offer(), poll(), peek()๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ ๊ฒ์ ๊ถ์ฅํ๋ค.offer()๋ ํ๊ฐ ๊ฐ๋ ์ฐผ์ ๋ ์์ธ๊ฐ ์๋๋ผ false๋ฅผ ๋ฐํํ๋ฏ๋ก(poll()๋ ๋ง์ฐฌ๊ฐ์ง), ์์ธ ์ฒ๋ฆฌ ์์ด๋ ์์ ํ๊ฒ ์ฌ์ฉํ ์ ์๋ค.siftUp()์ด ๊ตฌํ๋์ด ์๊ณ , poll()๋ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ด๋ถ์ ์ผ๋ก siftDown()์ด ๊ตฌํ๋์ด ์๋ค.๐์ฐธ๊ณ ์๋ฃ
๐[Java] PriorityQueue(์ฐ์ ์์ ํ) ํด๋์ค ์ฌ์ฉ๋ฒ & ์์ ์ด์ ๋ฆฌ: https://coding-factory.tistory.com/603