한 레벨 당 최대 노드의 개수 : 2^(레벨) ex) 레벨 2의 최대노드 개수 : 2^2=4
최대 노드의 개수 : ∑(i=0~H)2^i = 2^(H+1) - 1 → N(최대 노드의 개수) = 2^(H+1) - 1 → H(높이) = O(logn) → 이진 트리의 시간복잡도는 O(logn)이다.(시간복잡도는 높이에 비례한다)
(꽉 참)
(왼쪽 노드부터 차례로 채움)
(모든 노드가 한 방향)
#include<stdio.h>
typedef char element;
typedef struct treeNode {
element data;
struct treeNode* left_link;
struct treeNode* right_link;
}treeNode
// 루트 노드 만듬
treeNode* make_tree(element value, element left_value, element right_value) {
treeNode *root = (treeNode *) malloc(sizeof(treeNode));
root -> data = value;
root -> left_link = NULL;
root -> right_link = NULL;
return root;
}
// 왼쪽으로 갈라지는 노드 추가
treeNode* left_append(treeNode* node, element left_value, element right_value) {
treeNode *left = (treeNode *) malloc(sizeof(treeNode));
node -> left_link =left;
left -> data = left_value;
left -> left_link = NULL;
left -> right_link = NULL;
return left;
}.
// 오른쪽으로 갈라지는 노드 추가
treeNode* right_append(treeNode* node, element left_value, element right_value) {
treeNode *right = (treeNode *) malloc(sizeof(treeNode));
node -> right_link =right;
right -> data = left_value;
right -> left_link = NULL;
right -> right_link = NULL;
return right;
}.
딕셔너리 추가기능