목록2024/08/10 (2)
Minwoo Dev.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bfi16k/btsI1duuWL3/XJgXSZtMQrIAKp1QMPhLO0/img.png)
이진트리 이진트리는 완전 이진트리, 포화이진트리, 일반 이진트리 위를 바탕으로 기본적인 코드를 작성해보겠다. 기본 코드#include#includetypedef struct _tree{ struct _tree *left; int data; struct _tree *right;} Tree;void AddData(Tree **position, int value) { *position = (Tree *)malloc(sizeof(Tree)); (*position)->data = value; (*position)->left = NULL; (*position)->right = NULL;}void initData(Tree **head) { AddData(head, ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bijr5w/btsI0D8vaqE/GfQvpoj3FiYWqoM4Sfys0K/img.png)
완전 이진트리자식 노드가 왼쪽에서부터 채워져있는 형태의 트리 위 트리는 완전이진트리의 예시이다. 완전 이진트리는 배열으로 나타내기 편리하다.아래와 같이 왼쪽 위에서부터 순서대로 한층씩 내려오며 배열의 인덱스에 채워넣는다고 하자. 두 가지 방법으로 배열을 채울 수 있다. 1. 인덱스 0부터 차례로 채워넣기규칙성을 찾아보자.왼쪽 자식 인덱스 : 2*(부모 인덱스)+1오른쪽 자식 인덱스 : 2*(부모 인덱스)+2 실행 코드#include#define MAX_NODE 16void btree_array(int arr[], int idx){ // 왼쪽 자식 출력 int left_child = 2 * idx+1; if (left_child 위 코드는 인덱스가 3인 40의 왼쪽 자식과 오른쪽 자..