# 樹的遍歷
## 數據結構
```C++
struct node{
typename data;
int child[maxn]; // vector<int> child;
}Node[maxn];
```
```C++
// 新建
int index=0;
int newNode(int v){
Node[index].data=v;
Node[index].child.clear();
return index++; // 返回結點下標
}
```
## 樹的遍歷
### 先序遍歷
```C++
void preOrder(int root){
printf("%d",Node[root].data);
for(int i=0;i<Node[root].child.size();i++){
preOder(Node[root].child[i]);
}
}
```
### 層序遍歷
```C++
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]);
}
}
}
```
?