树的遍历
1. 数据结构
struct node{
typename data;
int child[maxn]; // vector<int> child;
}Node[maxn];
// 新建
int index=0;
int newNode(int v){
Node[index].data=v;
Node[index].child.clear();
return index++; // 返回结点下标
}
2. 树的遍历
2.1. 先序遍历
void preOrder(int root){
printf("%d",Node[root].data);
for(int i=0;i<Node[root].child.size();i++){
preOder(Node[root].child[i]);
}
}
2.2. 层序遍历
void layerOrder(int root){
queue<int> q;
q.push(root);
while(!q.empty()){
int front=q.front();
printf("%d",Node[front].data);
q.pop();
for(int i=0;i<Node[front].child.size();i++){
q.push(Node[front].child[i]);
}
}
}