8. 9

바르고·2023년 8월 9일
0

BFS, 보충

너비 구분이 필요하면.
  - int breadth 만들어서
  - q.size 측정해 while(--size>=0)
  - 끝나면 breadth++

아니면 큐에 배열을 넣던가 클래스를 넣던가.
  - 배열이 메모리 덜 쓰긴함.
깊이 우선 탐색
  - 재귀적이거나 스택 이용해서 구현
  -                                                                                                                                      순회, traversal 
  - 트리의 노드를 체계적으로 방문하는 것
  - 전위 순회, preorder 
    - 부모노드 방문 후 좌우
  - 중위 순회, inorder
    - 좌 부모 우
  - 후위 순회, postorder
    - 좌 우 부모

-----.
  - O(logN) 보장.
  - 삽입
    - 아래 넣고 부모랑 계속 대소 비교.
  - 삭제
    - 마지막 원소 데려와서 자식 중 큰 놈이랑 비교

알고리즘 맵,셋,우선순위 큐

, Map
  - key와 value값으로 데이터를 저장
  - 저장 순서를 유지하지 않는다.
  - 키는 중복을 허락하지 않는다.
  
Map<key,value> map = new HashMap<>();
map.put(key, value);
map.get(key) // value값 반환. (없을 시 null)
map.getOrDefault(key, default) // value값 반환. (없을 시 default값)
map.remove(key) // 삭제 (없으면 null)
map.containskey(key) // 해당 키 존재하는 지 (없으면 null)

-----, Set
  - 순서가 없이 중복되지 않는 데이터를 저장.

Set<type> set = new HashSet<>();

set.add()
set.addAll(리스트)
set.remove()

set1.retainAll(set2) // 교집합
set1.addAll(set2) // 합집합
set1.removeAll(set2) // 차집합

-----

우선순위 큐, Priority Queue
  - 큐와 유사한 구조를 가지며 각 데이터의 우선순위를 정해 데이터를 우선적으로 출력
  - 내부 요소는 힙으로 구성되어 이진트리 구조로.
  - compareTo 메서드를 오버라이드 해서 개인 클래스에 적용 가능

PriorityQueue<T> pqueueLowest = new PriorityQueue<>();
PriorityQueue<T> pqueueHighest = new PriorityQueue<>(Collections.reverseOrder)

pq.add()
pq.remove(); // 삭제 및 반환
pq.remove(index) // index순위에 해당하는 값 삭제 및 반환.
profile
바르고의 다락방

0개의 댓글