선형 자료구조 : 배열, 연결 리스트, 스택, 큐
모든 원소들 사이에서 관계 비교를 정하기 힘들다.
예를 들어
list = [8,19,20,25,36]
위 리스트는 내림차순으로 정렬되어 있습니다. 자신보다 크거나 작다는 관계를 공통적으로 가지고 있어 이 때는 선형 자료구조를 사용하기 좋습니다.
list = ['아들', '아빠', '엄마']
위 리스트에서는 아들과 아빠는 부자관계이고 아빠와 엄마는 부부관계인데 이렇게 2개 이상의 관계를 표현하는데 한계가 있습니다.
그림으로 표현해보면
이렇게 관계를 표현하는 것보다
이렇게 보는게 훨신 보기 편하다고 생각할 것 입니다.
위 예시의 공통점
- 하나의 근원 (root)으로 부터 파생됨
- 한 노드가 여러 개의 노드로 전파됨
- 순환하는 경로 (cycle path)가 없음
이진 탐색을 할 때 사용하는 자료구조
예를 들어 [5,17,23,30,37,48,50]에서 37이라는 숫자의 위치를 찾으려고 합니다.
이 때 사용할 수 있는 방법은
1부터 1씩 더해보면서 37이라는 위치를 구한다.
list = [5,17,23,30,37,48,50] for idx, number in enumerate(list): if number == 37: print(idx+1) > 5
시간 복잡도 : O(N)
만약 위처럼 이진 탐색 트리로 구현되었다고 가정했을 땐
시간 복잡도: O(logN)
트리 자료구조에 포함된 노드들을 순회하는 방법
1. 전위 순회
2. 중위 순회
3. 후위 순회
참고자료
개발왕, 도던
동빈나 youtube