트리는 뿌리(Root), 가지(Branch), 잎(Leaf)로 이루어짐
> Root: 트리 자료구조 가장 위 노드
> Branch: Root, Leaf 사이 모든 노드
> Leaf: = terminal node 가지 끝에 달린 노드
Parent(부모), Children(자식), 형제(Sibling)
Path(경로): 한 노드에서 다른 노드 이르는 길 사이에 있는 노드 순서 ex) B,D,F
Length(길이): 출발노드에서 목적지 노드까지 거쳐야 하는 Node 사이의 길 ex) B, D, F 의 Length = 2
Depth(노드의 깊이): 뿌리 노드에서 해당 노드까지 이르는 경로 길이 (Root Node는 0)
Level(레벨): 깊이가 같은 노드의 집합
Height(트리의 높이): 가장 깊은 곳에 있는 잎 노드까지의 깊이
Degree(차수)
> 노드의 차수: 노드의 자식 노드 개수
> 트리의 차수: 트리 내에 있는 노드들 가운데 자식이 가장 많은 노드의 차수
void LCRS_PrintNodesAtLevel(LCRSNode* Root, int level)
{
int depth = 0;
if (level == 0)
{
printf("%c\n", Root->data);
}
if (Root->LeftChild != NULL)
{
LCRS_PrintNodesAtLevel(Root->LeftChild, level - 1);
}
if (Root->RightSibling != NULL)
{
LCRS_PrintNodesAtLevel(Root->RightSibling, level);
}
}