트리는 방향을 가진 그래프. 노드를 가리키는 간선은 단 하나씩.
여러 용어가 존재함.
규칙도 있다.
트리는 어디에서 사용할까?
보통 조직도, 파일구조 등.
트리는 여러 종류가 있다.
탐색을 위한 트리.
정점이 최대 2개의 자식을 가진다.
마지막 레벨을 제외한 모든 정점이 채워져있음.
왼 => 오 순으로 노드가 차있어야함.
맨밑까지 평평하게 다 채워짐. 모든 리프노드가 동일레벨.
그래프의 일종이여서 그래프처럼 구현 가능.
이진트리는 2개씩있으니, 배열이나 링크드 리스트로 쉽게 가능하다.
const binaryTree = [
1,
5, 6,
3,7,9,8];
//이렇게 표현이 가능하다. 부모는 index/2 - 1, 자식은 왼쪽이면 index*2 + 1, 오른쪽은 index*2 + 2
숙제로 전위,중위,후위 순회를 내주셨다. 기간 안에 작성해보겠다.
이진트리에서 설명한 녀석.
이녀석을 설명하기 위해선 우선순위 큐가 필요.
우선순위 큐는 자료구조가 아닌 개념.
우선순위가 높은 원소가 먼저 나감(FIFO가 아님). 왜 큐라고 부를까?
Queue의 정의는 대기줄. 사람들이 알기 쉽게 하기 위해...
개인적으로는 우선순위 힙이 맞아보임ㅋㅋ
이녀석도 트리를 이용한 구조. 문자열 저장-탐색에 쓰임
=> 검색어 자동완성에 쓰인다!
저장-탐색이 문자열의 길이만큼 걸림. wow
하지만 각 정점이 자식에 대한 링크를 전부 갖고있어야 하기에, 저장공간 소모가 크다.
taxi
면 t, ta, tax, taxi
자동완성 구현 숙제 => 전위순회 써야할듯