트리 ( Tree )
개념
Node (노드)
: 트리를 구성하고 있는 각각의 요소를 의미한다.Edge (간선)
: 트리를 구성하기 위해 노드와 노드를 연결하는 선을 의미한다.Root Node (루트 노드)
: 트리 구조에서 최상위에 있는 노드를 의미한다.Terminal Node
( =leaf Node
, 단말 노드) : 하위에 다른 노드가 연결되어 있지 않은 노드를 의미한다.Internal Node
(내부노드, 비단말 노드) : 단말 노드를 제외한 모든 노드로 루트 노드를 포함한다.
종류
✔ 완전 이진 트리 (Complete binary tree)
마지막 레벨을 제외한 모든 서브트리의 레벨이 같아야 하고, 마지막 레벨은 왼쪽
부터 채워져 있어야 한다.
✔ 정 이진 트리 (Full binary tree)
자식 노드가 없거나 2개인 트리
✔ 포화 이진 트리 (Perfect binary tree)
빈 공간이 없이 모든 노드
가 2개의 자식을 갖고 있는 트리
✔ 이진 탐색 트리 (Binary search tree)
부모노드 보다 작은 값의 노드는 왼쪽 child, 큰 값의 노드는 오른쪽 child로 구성되어 있는 tree.
key값의 중복
이 허용되지 않는다.
Binary Tree 순회 방법
이진 탐색 트리 ( Binary Search Tree )
탐색 연산은 O(logn)을 갖으며 (엄밀히 말하면 O(h), h는 높이 ), 한쪽으로 치우쳐진 편향 트리(Skewed Tree)
가 되면 worst case로 O(n)
을 갖는다.
Binary Search Tree의 단점
배열보다 많은 메모리를 사용했지만 시간복잡도가 같게되는 비효율적이 상황이 발생하기도 한다.
➡ Rebalancing 기법의 등장
Balanced Tree
Last updated