=> 일직선상에 놓일 수 있다.
but> 트리 : 비선형 => 1:N
비선형 구조
원소들 간에 1:N 관계를 가짐 (여기서 1은 항상 부모, N은 항상 자식)
원소들 간에 계층관계를 가지는 계층형 자료구조
상위 원소에서 하위 원소로 내려가면서 확장되는 트리 모양의 구조
부모와 자식이 1 : N
하나의 자식은 둘 이상의 부모 X
노드 개수 : N => 간선 개수 : N-1
원소가 하나이거나 비어있어도 트리
사이클 X
노드 중 최상위 노드를 루트(root)라 한다.
나머지 노드들은 n(>= 0)개의 분리 집합 T1...TN으로 분리될 수 있다.
간선을 끊을 수 있음

단말 노드 : leaf node (external node)
internal node : 자식이 하나 이상

노드(node) : 트리의 원소 (vertex)
간선 : 노드를 연결하는 선, 부모 노드와 자식 노드를 연결
루트 노드(root node) : 트리의 시작 노드
경로(path) : 간선들로 연결된 노드를 순서대로 나열한 것
두 노드 간 거리 : 두 노드 사이의 간선의 개수
형제 노드(sibling node) : 같은 부모 노드의 자식 노드들
조상 노드 : 간선을 따라 루트 노드까지 이르는 경로에 있는 모든 노드들
서브 트리(subtree) - 부모 노드와 연결된 간선을 끊었을 때 생성되는 트리
자손 노드 : 서브 트리에 있는 하위 레벨의 노드들
노드 A~A 거리 : 0 => 레벨 : 0
B, C, D : 루트에서 거리가 1 => 레벨 : 1

모든 노드들이 2개의 서브 트리를 갖는 특별한 형태의 트리
각 노드가 자식 노드를 >최대 2개까지만 가질 수 있는 트리
레벨 i에서의 노드의 최대 개수는 2^i개
높이가 h인 이진 트리가 가질 수 있는 노드의 최소 개수는 h+1개, 최대 개수는 (2^(h+1) - 1)개

마지막 레벨은 차있어도 되고, 안차있어도 됨.
마지막 레벨 빼고는 모든 레벨이 다 차있어야 함.
완전 이진트리 안에 포화 이진트리가 있음
이진 트리에 각 노드 번호를 다음과 같이 부여
루트의 번호를 1로 함
레벨 n에 있는 노드에 대하여 왼쪽부터 오른쪽으로 2^n부터 2^(n+1) - 1까지 번호를 차례로 부여
노드 번호의 성질
i/22*i2-i+12^n노드 번호를 배열의 인덱스로 사용
높이가 h인 이진 트리를 위한 배열의 크기 : 2^(h+1)
편향 이진 트리의 경우에 사용하지 않는 배열 원소에 대한 메모리 공간 낭비 발생
트리의 중간에 새 노드를 삽입하거나 기존 노드를 삭제할 경우 배열의 크기 변경이 어려워 비효율적이다.
배열을 이용한 이진 트리의 표현의 단점을 보완하기 위해 연결리스트를 이용하여 트리를 표현할 수 있다.
연결 자료구조를 이용한 이진 트리의 표현


preorder_traverse(T) {
	if(T is not null) {
    	visit(T)
        preorder_traverse(T.left)
        preorder_traverse(T.right)
    }
}inorder_traverse(T) {
	if(T is not null) {
    	inorder_traverse(T.left)
        visit(T)
        inorder_traverse(T.right)
    }
}postorder_traverse(T) {
	if(T is not null) {
    	postorder_traverse(T.left)
        postorder_traverse(T.right)
        visit(T)
    }
}