본문 바로가기

공부/자료구조5

[자료구조 공부기록] 5. Tree 특징 비선형 자료구조입니다. 계층적인 구조를 가지고 있습니다. 장점 및 단점 1) 장점 (특정 트리의 경우) 선형 자료구조에 비해서 탐색 및 검색이 빨라집니다. 2) 단점 (대부분의 경우) 트리가 편향된 경우 삽입, 삭제가 늦어질 수 있습니다. 관련 용어 노드(node): 트리를 구성하는 기본 원소 루트 노드(root node/root): 트리에서 부모가 없는 최상위 노드, 트리의 시작점 부모 노드(parent node): 루트 노드 방향으로 직접 연결된 노드 자식 노드(child node): 루트 노드 반대방향으로 직접 연결된 노드 형제 노드(siblings node): 같은 부모 노드를 갖는 노드들 리프 노드(leaf (node))/단말 노드(terminal node): 자식이 없는 노드 경로(pat.. 2021. 5. 24.
[자료구조 공부기록] 4. Queue + Python 구현 특징 선형구조를 가진 자료구조입니다. FIFO(First In First Out/먼저 들어온 원소가 가장 먼저 나감) 구조를 가지고 있습니다. 오래된 데이터가 있는 곳이 앞(front), 새로운 데이터가 쌓인 곳이 뒤(back)입니다. 장점 및 단점 1) 장점 데이터의 삽입, 삭제가 빠릅니다. 2) 단점 중간에 있는 데이터에 접근이 불편합니다. 배열로 구현할 경우 삽입, 삭제 시 데이터를 모두 옮겨주어야 합니다. 큐의 데이터 삽입은 Enqueue, 삭제(데이터를 내보냄)는 Dequeue라고 합니다. 큐에는 구현 방식에 따라서 몇 가지 분류가 있습니다. 일반적으로 선형 큐 : 일반적인 큐이지만 데이터 Enqueue, Dequeue 할 때 데이터를 옮겨줘야 합니다. 원형 큐(Circular Queue) : .. 2021. 5. 21.
[자료구조 공부기록] 3. Stack + Python 구현 특징 선형구조를 가진 자료구조입니다. LIFO(Last In First Out / 제일 나중에 들어온 원소가 제일 먼저 나감) 구조를 가지고 있습니다. 장점 및 단점 1) 장점 구조가 단순하여 구현이 간단합니다. 성능이 좋습니다. 2) 단점 일부 구현 방법은 미리 크기를 정해주어야 합니다. 오래된 데이터에 접근이 힘듭니다. 데이터가 들어가고 나가는 방법만 이해하신다면 스택은 구조가 정말 단순하여 크게 말씀드릴 것은 없습니다. 왼쪽의 사진처럼 Push로 데이터를 넣게 되면 맨 위에 저장되고 오른쪽 사진처럼 Pop으로 데이터를 뺀다면 맨 위의 데이터가 나가는 형식입니다. # 데이터 저장 노드 정의 class Node: def __init__(self, data): self.data = data self.be.. 2021. 5. 20.
[자료구조 공부기록] 2. List(Linked List) + Python 구현 일반적인 특징 선형구조의 자료구조 입니다. 배열과 달리 순서가 중요하기 때문에 sequence(시퀀스)라고도 부릅니다. 구현 방식이 두 가지로 나뉩니다. Array List : 배열과 비슷한 방식으로 구현됩니다. Linked List : 처음 그림과 같이 다음 노드의 주소를 가지고 찾아가는 방식입니다. 사이즈 크기가 변하는 동적 자료형입니다. 장점 및 단점 1) 장점 배열과 비교하면 삽입과 삭제가 편합니다. 삭제를 한다고 하면 Array(배열)과 달리 원소들을 당기거나 밀어낼 필요 없이 다음 노드의 주소만 바꿔주면 됩니다. 삽입도 마찬가지로 노드의 주소만 바꿔 주면 되므로 배열에 비해 삽입과 삭제가 간단해진 것입니다. 2) 단점 (상대적으로) 배열에 비하면 검색이 느립니다. 주소를 담고 있는 포인터에 메.. 2021. 5. 20.