树的遍历

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]);
        }
    }
}

results matching ""

    No results matching ""