1、树的先根遍历
//树的先根遍历
void preOrder(int root)
{
printf("%d",node[root].data);
for(int i=0;i<node[root].child.size();i++)
{
preOrder(node[root].child[i]);
}
}
2、树的层序遍历
//树的层序遍历
void LayerOrder(int root)
{
queue<int> q;
q.push(root);
while(!q.empty())
{
int front=q.front();
q.pop();
printf("%d ",node[front].data);
for(int i=0;i<node[front].child.size();i++)
{
q.push(node[front].child[i]);
}
}
}
加强版---增加层次
struct Node
{
int layer;
int data;
vector<int> child;
};
void LayerOrder(int root)
{
queue<int> q;
q.push(root);
node[root].layer=0;
while(!q.empty())
{
int front=q.front();
q.pop();
printf("%d ",node[front].data);
for(int i=0;i<node[front].child.size();i++)
{
int child=node[front].child[i];
node[child].layer=node[front].layer+1;
q.push(child);
}
}
}