Today
-
Yesterday
-
Total
-
  • 💡 [자료구조] Tree에 관하여
    | 자료구조 & 알고리즘/자료구조 2021. 10. 26. 09:37

    Tree

    • 스택이나 큐와 같은 선형 구조가 아닌 비선형 자료구조
    • 계층적 관계 (Hierarchical Relationship)을 표현하는 자료구조

    Tree 관련 용어

    • Node (노드) : 트리를 구성하고 있는 각각의 요소
    • Edge (간선) : 트리를 구성하기 위해 노드와 노드를 연결하는 선
    • Root Node (루트 노드) : 트리 구조에서 최상위에 있는 노드
    • Leaf Node (Terminal Node, 단말 노드) : 하위에 다른 노드가 연결되어 있지 않은 노드
    • Internal Node (내부 노드, 비단말 노드) : 단말 노드를 제외한 모든 노드로 루트 노드도 포함
    • Sibling Node (Brother Node, 형제 노드) : 동일한 부모를 가지는 노드
    • Path (경로) : 한 노드에서 다른 한 노드에 이르는 길 사이에 있는 노드들의 순서
    • Level (레벨) : 루트 노드(level = 0)부터 노드까지 연결된 간선 수
    • Depth (깊이) : 루트 경로의 길이
    • Height (높이) : 가장 긴 루트 경로의 길이 (트리의 최대 레벨)
    • Degree (차수) : 각 노드의 자식 노드의 개수
    • Degree of Tree (트리의 차수) : 트리에 있는 노드의 최대 차수
    • Subtree (서브트리) : 큰 트리에 속하는 작은 트리
    • Forest (포레스트) : 서로 독립인 트리들의 모임

    Binary Tree (이진 트리)

    • 부모 노드 밑의 자식 노드의 개수를 차수(degree)라고 해요
    • 차수를 최대 2로 제한하는, 트리의 가장 간단한 형태에요
    • 보통 왼쪽 자식과 오른쪽 자식으로 구분지어요
    • 따라서 값 - 왼쪽 자식 노드 포인터 - 오른쪽 자식 노트 포인터 로써 구현할 수 있어요
    • 모든 트리는 이진 트리로 재구성할 수 있기 때문에 일반적으로 트리 구조는 이진 트리로 구현돼요

    Full Binary Tree (정 이진 트리)

    • 모든 노드의 자식이 0개이거나 2개인 이진 트리에요. 즉, 자식이 1개인 노드는 없어요

    Perfect Binary Tree (포화 이진 트리)

    • 모든 리프 노드의 높이가 같고 리프 노드가 아닌 노드는 모두 2개의 자식을 가져요
    • 즉, 완전한 이등변삼각형 모양으로 표현할 수 있는 이진 트리에요
    • 보통 리프 노드 중 사용되지 않는 노드는 default값 (0, null, false 등) 이 들어가요

    Complete Binary Tree (완전 이진 트리)

    • 트리의 노드들이 좌측 상단부터 차곡차곡 하나씩 쌓인 형태의 트리에요
    • 즉, 왼쪽 자식 노드가 먼저 채워지고 그 후에 오른쪽 자식 노드가 채워져요
    • 수학적 성질을 사용하기 용이하고, 배열을 이용해 구현하기도 용이하기 때문에 많이 쓰이는 트리 구조에요
sangilyoon.dev@gmail.com