이중 연결리스트의 노드 포인터를 이용하여부모노드가자식노드를가리키게하는방법입니다. 자식 노드를 노드 포인터로 생성하고 자식 노드가 없는 경우는 null로 표기합니다.
기본 알고리즘
#include<stdio.h>typedefstructTreeNode {
int data;
structTreeNode* left, * right;
} TreeNode;
voidmain(){
TreeNode* n1, * n2, * n3;
n1 = (TreeNode*)malloc(sizeof(TreeNode));
n2 = (TreeNode*)malloc(sizeof(TreeNode));
n3 = (TreeNode*)malloc(sizeof(TreeNode));
n1->data = 10; // 첫 번째 노드
n1->left = n2;
n1->right = n3;
n2->data = 20; // 두 번째 노드
n2->left = NULL;
n2->right = NULL;
n3->data = 30; // 세 번째 노드
n3->left = NULL;
n3->right = NULL;
free(n1); free(n2); free(n3);
return0;
}
위 이진 트리의 기본 구조는 n1을 루트 노드로써 데이터 10을 저장하고 n1의 왼쪽 자식 노드인 n2와 오른쪽 자식 노드인 n3를 연결합니다. n2의 데이터에 20을 저장하고 n2의 자식 노드는 모두 null로 지정하며, n3의 데이터에 30을 저장하고 n3의 자식노드는 모두 null로 지정합니다.