트리 - 스레드 이진 트리
·
자료구조
# [C언어로 쉽게 풀어쓴 자료구조(천인국)]를 공부하고 주요 내용을 정리하고자 작성하는 글입니다.# 해당 게시글에 대한 모든 피드백 환영합니다. // 해당 단원인 '트리'의 목차가 업데이트 될 예정입니다.이전 글: 트리 - 이진 트리의 노드 개수/ 단말 노드 개수/ 높이 구하기 스레드 이진 트리 Threaded Binary Tree스레드 이진 트리가 무엇인지 알기 전에 왜 '스레드 이진트리'가 나오게 되었는지 먼저 생각해보자. 전위/중위/후위/레벨 순회 등 이진트리를 순회할 때 NULL 링크를 만나면 왼쪽 또는 오른쪽 자식 노드가 없음으로 이해해왔다. 즉 NULL 링크(또는 포인터) 는 자식노드의 유무를 알려주는 유일한 도구이다.  그런데, 이러한 NULL 포인터가 이진트리 내에 몇 개가 존재하는지 따..
트리 - 이진 트리의 노드 개수/ 단말 노드 개수/ 높이 구하기
·
자료구조
# [C언어로 쉽게 풀어쓴 자료구조(천인국)]를 공부하고 주요 내용을 정리하고자 작성하는 글입니다. # 해당 게시글에 대한 모든 피드백 환영합니다. // 해당 단원인 '트리'의 목차가 업데이트 될 예정입니다. 이전글: 수식트리(후위표기수식) 이진트리의 노드 개수 구하기 이진트리에서 전체 노드의 개수를 세기 위해서는 모든 노드들을 한 번씩 방문해야 한다. 즉, 노드의 개수를 셀 때도 순회 알고리즘이 사용된다. 그렇다면, 어떤 순회 알고리즘을 사용하는 것이 가장 적합할까? 어떤 노드를 루트로 하는 이진트리의 노드의 개수는, 왼쪽 서브트리의 노드 개수와 오른쪽 서브트리의 노드 개수에 루트 노드의 수 1 을 더해주면 된다. 즉 왼쪽 서브트리 -> 오른쪽 서브트리 -> 루트 노드 순으로 방문하여 셈하는 알고리즘은..
트리 - 반복적 순회(전위/중위/후위 순회 스택으로 이해하기)
·
자료구조
# [C언어로 쉽게 풀어쓴 자료구조(천인국)]를 공부하고 주요 내용을 정리하고자 작성하는 글입니다. # 해당 게시글에 대한 모든 피드백 환영합니다. 이전 글: 트리-이진트리 순회 반복적 순회 스택 stack 자료구조와 for문을 이용해 트리를 순회하는 방식이다. 이전까지는 순환 호출을 이용해 순회를 했다면 반복적 순회는 for문과 스택을 이용한다. 전위/중위/후위 순회 모두 반복적 순회를 이용해 구현할 수 있다. 이전 글에서 예시로 들었던 아래의 트리를 이용해 전위/중위/후위 반복적 순회를 모두 살펴보자. 스택 그림만으로 방문 순서 알아내기 *pseudo-code: 프로그래밍 언어는 아니지만 유사한 모양으로 알고리즘의 원리를 설명할때 사용가능 1. 전위 순회 // Pseudo Code preorder_i..
트리 - 이진트리 순회
·
자료구조
# [C언어로 쉽게 풀어쓴 자료구조(천인국)]를 공부하고 주요 내용을 정리하고자 작성하는 글입니다. # 해당 게시글에 대한 모든 피드백 환영합니다. 이전글: 트리-이진트리 정의/성질/분류/표현법 순회 traversal 이진트리에 속하는 모든 노드를 한 번씩 방문하여 노드가 가지고 있는 데이터를 목적에 맞게 처리하는 것 전위 순회(preorder traversal) 중위 순회(inorder traversal) 후위 순회(postorder traversal) 전위 순회 preorder traversal 루트 노드 → 왼쪽 서브트리 → 오른쪽 서브트리 이때 서브트리도 하나의 트리이므로, 그 트리 안에서 위의 과정을 또 거치면 된다. 쉽게 생각하면 왼쪽으로 계속 가다가 막히면 오른쪽으로 가는 방법이다. 예를 들..
트리 - 이진트리 정의/ 성질/ 분류/ 표현법
·
자료구조
# [C언어로 쉽게 풀어쓴 자료구조(천인국)]를 공부하고 주요 내용을 정리하고자 작성하는 글입니다. # 해당 게시글에 대한 모든 피드백 환영합니다. 이전글: 트리-개념/용어정리 이진트리 binary tree 모든 노드가 2개의 서브 트리를 가지고 있는 트리 ※ 단, 서브트리가 공집합일 수 있음. 모든 노드의 차수 ≤ 2 공집합도 이진트리 서브 트리간의 순서 존재: 왼쪽, 오른쪽 성질 n 개의 노드를 가진 이진트리는 (n - 1)개의 간선을 가진다. 트리의 높이 = h → h ≤ 노드의 개수 ≤ 2^h - 1 노드의 개수 = n → ⌈log(n+1)⌉ ≤ 트리의 높이 ≤n * ⌈x⌉ : x 보다 작지 않은 최소의 정수(올림 연산) ex. ⌈2.4⌉ = 3 분류 1. 포화이진트리 full binary tre..
트리 - 개념/ 용어정리
·
자료구조
# [C언어로 쉽게 풀어쓴 자료구조(천인국)]를 공부하고 주요 내용을 정리하고자 작성하는 글입니다. # 해당 게시글에 대한 모든 피드백 환영합니다. 트리 Tree 계층적인 자료를 표현하기에 적합한 자료구조 용어 정리 노드의 차수 degree - 어떤 노드가 갖고 있는 자식 노드의 개수 트리의 차수 - 트리가 갖고 있는 노드의 차수 중, 가장 큰 값 레벨 level - 트리의 각 층에 번호를 매기는 것. 루트의 레벨 = 1 깊이 depth - 루트에서 어떤 노드까지를 잇는 간선의 개수 높이 height ① 트리의 최대 깊이 ② 트리의 최대 레벨 ※ 때에 따라 높이가 2가지로 달리 해석된다. 여기서는 높이를 트리의 최대 레벨이라고 생각하기로 한다.