728x90
알고리즘
2

[Python] 이진 탐색 트리(BST)와 트리 순회

■ 이진 탐색 트리 (Binary Search Tree) 노드의 왼쪽 서브트리에는 그 노드의 값보다 작은 값들을 지닌 노드들로 이뤄져 있는 반면, 노드의 오른쪽 서브트리에는 그 노드의 값과 같거나 큰 값들을 지닌 노드들로 이루어져 있는 트리 위 그림을 보면 이진 탐색 트리가 어떻게 생겨먹은 것인지 이해할 수 있을 것이다. 대충 어떤 것인지 알았다면 이제 이 그림에서 원하는 값을 찾는 과정을 살펴볼 것이다. ■■ 위 이진 탐색 트리에서 우리는 '7'을 찾아 볼 것이다. 당연하지만 루트인 '15'부터 시작한다. 1. '7'은 '15'보다 작기 때문에 왼쪽 자식 노드로 탐색이 진행된다. 2. '10' 또한 마찬가지로 '7'이 더 작기 때문에 왼쪽 자식 노드로 탐색이 진행된다. 3. 여기서부터 '7'은 '5'보..

[Python] Tree (트리)란?

■ 트리는 하나의 뿌리에서 위로 뻗어나가는 형상처럼 생겨서 '트리(나무)'라는 명칭이 붙었는데, 트리 구조를 표현할 때는 나무의 형상과는 반대 방향으로 표현한다. 트리는 자식도 트리고 또 그 자식도 트리고 또 그.... 흔히 서브트리(Subtree)로 구성된다고 표현한다. 좀 어렵게 표현하자면 재귀로 정의된(Recursively Defined) 자기 참조(Self-Referential) 자료구조하고 할 수 있다. ■■ 자, 이제 트리의 각 명칭을 살펴보자. 우선 트리는 항상 루트(Root)에서 시작된다. 루트는 자식(Child)를 가지며 각 간선(Edge)로 연결되어 있다. 차수(Degee) 자식 노드의 개수 크기(Size) 자신을 포함한 모든 자식 노드의 개수 리프(Leaf) 자식 노드가 없는 노드 서..

728x90