1 定义
1.1 存储结构实现
const int MAXN = 20;
typedef int ElemType;
struct node
{
ElemType data;
vector<int> child;
int layer;
}Node[MAXN];
2 基本操作
2.1 新建结点
int Index = 0;
int newNode(int v){
Node[Index].data = v;
Node[Index].child.clear();
return Index++;
}
2.2 先根遍历
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 层序遍历
2.3.1 层序遍历
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 层序遍历(附带统计层数)
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);
}
}
}