输入要求:若干行,每行描述了一组双亲节点和孩子节点的关系序偶对(每个节点用不同的大写字母表示,节点小于26个)。且数的度小于5。
时间: 2024-03-09 15:49:06 浏览: 169
根据您的输入要求,可以使用一个哈希表来存储每个节点的父节点和子节点。代码如下:
```
#include <iostream>
#include <unordered_map>
#include <vector>
using namespace std;
int main() {
// 存储每个节点的父节点和子节点
unordered_map<char, char> parent;
unordered_map<char, vector<char>> children;
// 读入数据
string line;
while (getline(cin, line)) {
char p = line[0];
char c = line[2];
parent[c] = p;
children[p].push_back(c);
}
// 找到根节点
char root;
for (auto& it : parent) {
if (parent.find(it.second) == parent.end()) {
root = it.second;
break;
}
}
// 先根遍历
vector<char> stack{root};
while (!stack.empty()) {
char node = stack.back();
stack.pop_back();
cout << node << " ";
if (children.find(node) != children.end()) {
for (char child : children[node]) {
stack.push_back(child);
}
}
}
return 0;
}
```
假设输入数据如下:
```
A B
A C
B D
B E
C F
```
输出结果为:
```
A B D E C F
```
阅读全文