이진트리의 실전적 구현

less than 1 minute read

역시나 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;  
}