1、樹節點的定義方式
2、樹節點的創建
3、樹的前序遍歷
4、樹的層序遍歷
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
const int maxn = 100;
struct node
{
int data; // 存放當前節點的數據
int layer; // 當前節點的層次
vector<int> child; // 存放所有子節點的下標
}tree[maxn];
int index = 0;
int newNode(int v)
{
tree[index].data = v;
tree[index].child.clear();
return index++;
}
// 樹的先序遍歷
void preorder(int root)
{
printf("%d ", tree[root].data);
int len = tree[root].child.size();
for (int i = 0; i < len; ++i)
{
preorder(tree[root].child[i]);
}
}
// 樹的層序遍歷
void layerOrder(int root)
{
queue<int> q;
q.push(root);
tree[root].layer = 0; // 根節點的層號爲0
while (!q.empty())
{
int loc = q.front();
printf("layer = %d, data = %d\n", tree[loc].layer, tree[loc].data);
int len = tree[loc].child.size();
for (int i = 0; i < len; ++i)
{
int child = tree[loc].child[i];
tree[child].layer = tree[loc].layer + 1;
q.push(child);
}
}
}
int main()
{
return 0;
}
謝謝閱讀