Tree 구조
트리는 노드로 이루어진 비선형 자료 구조
데이터의 요소들은 단순히 나열하는게 아닌 부모와 자식의 관계로 계층적인 구조이다
그래프의 한 종류이며 사이클이 없다
Tree의 종류
이진트리 : 트리를 구성 하는 노드의 최대 차수(degree)가 갯수가 2개인 노드들로 구성된 트리
이진트리 안에서도 3종류로 나뉘는데
1. 완전 이진 트리 Complete
2. 포화 이진 트리 PerFact
3. 전 이진 트리 Full
완전 이진 트리(complete)
전 이진 트리(Full)
포화 이진 트리(Perfact)
이진트리 순회
1.중위 순회
왼쪽트리 -> 루트노드 -> 오른쪽트리
4-2-5-1-3
루트 노드 가운데
2.후위 순회
왼쪽트리 -> 오른쪽트리 -> 루트노드
4-5-2-3-1
루트노드가 마지막
3.전위 순회
루트노드 -> 왼쪽트리 -> 오른쪽트리
1-2-4-5-3
루트 노드가 첫번째
Heap
힙은 완전이진트리를 기본으로 한 자료구조
1. 일반적으로 배열을 사용하여 구현함
2. 완전이진트리 최댓값 및 최솟값을 찾아내는 연산
3. A가 B의 부모노드 이면 A의 키값과 B의 키값 사이에는 대소관계가 성립함
Heap의 종류
마지막으로 Tree를 코드를 만들기
const TreeNode = function(value){
this.value = value
this.children = []
}
TreeNode.prototype.insert = function(value){
let node = new TreeNode(value)
this.children.push(node)
}
TreeNode.prototype.contain = function(value){
if(this.value === value){
return true
}
for(let el of this.children){
if(el.contains(value)){
return true
}
}
return false
}