Definition 1
1.1 storage structure to achieve
const int MAXN = 20;
typedef int ElemType;
struct node
{
ElemType data;
vector<int> child;
int layer;
}Node[MAXN];
2 Basic Operation
New node 2.1
int Index = 0;
int newNode(int v){
Node[Index].data = v;
Node[Index].child.clear();
return Index++;
}
2.2 First Traversal
void preorder(int root){
printf("%d\n", Node[root].data);
for (int i = 0; i < Node[root].child.size(); ++i)
{
preorder(Node[root].child[i]);
}
}
2.3 traversal sequence
2.3.1 traversal sequence
void layerorder(int root){
queue<int> q;
q.push(root);
while(!q.empty()){
int now = q.front();
q.pop();
printf("%d\n", Node[now].data);
for (int i = 0; i < Node[now].child.size(); ++i)
{
q.push(Node[now].child[i]);
}
}
}
2.3.2 traversal sequence (with statistics layers)
void layerorder(int root){
queue<int> q;
Node[root].layer = 0;
q.push(root);
while(!q.empty()){
int now = q.front();
q.pop();
printf("%d\n", Node[now].data);
for (int i = 0; i < Node[now].child.size(); ++i)
{
int child = Node[now].child[i];
Node[child].layer = Node[now].layer + 1;
q.push(child);
}
}
}