이진트리의 실전적 구현
역시나 Memory Pool을 이용한 링크드리스트의 구현과 크게 다르지 않다.
#include <stdio.h>
struct Node {
int value;
Node* left;
Node* right;
}
Node* root;
Node buf[100000];
int bufCount;
Node* myAlloc(int value, Node* left, Node* right) {
buf[bufCount].value = value;
buf[bufCount].left = left;
buf[bufCount].right = right;
return &buf[bufCount++];
}
제목은 이진트리지만 한기지 덧붙여서 자식의 개수에 제한이 없는 트리를 구현하려면 어떻게 해야할까?
자식을 링크드리스트로 구성하고 그 Head만을 트리의 노드 안에 두면 해결이 가능할 것이다.
struct Node {
int value;
Node* parent, brother, child;
}