已知一棵树的节点关系,编程实现树的先根遍历c++源代码
时间: 2024-03-17 08:40:28 浏览: 55
好的,以下是 C++ 的源代码实现:
```cpp
#include <iostream>
#include <vector>
using namespace std;
struct TreeNode {
int val;
vector<TreeNode*> children;
TreeNode(int x) : val(x) {}
};
void pre_order(TreeNode* root) {
if (root == nullptr) {
return;
}
cout << root->val << " "; // 先访问根节点
for (auto child : root->children) { // 遍历子节点
pre_order(child); // 对每个子节点进行先根遍历
}
}
int main() {
// 创建一棵树
TreeNode* root = new TreeNode(1);
TreeNode* node1 = new TreeNode(2);
TreeNode* node2 = new TreeNode(3);
TreeNode* node3 = new TreeNode(4);
TreeNode* node4 = new TreeNode(5);
TreeNode* node5 = new TreeNode(6);
root->children.push_back(node1);
root->children.push_back(node2);
node1->children.push_back(node3);
node2->children.push_back(node4);
node2->children.push_back(node5);
// 先根遍历树
cout << "pre order: ";
pre_order(root);
return 0;
}
```
在上面的代码中,我们定义了一个 `TreeNode` 结构体,表示树的节点。该结构体包含 `val` 和 `children` 两个成员变量,分别表示节点的值和子节点列表。
我们使用 `pre_order()` 函数实现了树的先根遍历,其中对于每个节点,我们先输出它的值,然后遍历它的每个子节点,对每个子节点进行递归遍历。
在 `main()` 函数中,我们创建了一棵树,并对其进行了先根遍历。您可以根据实际情况进行修改和调用。
阅读全文