c++实现多叉树树形显示(适合家谱的显示)
时间: 2023-10-22 10:06:31 浏览: 37
要实现多叉树树形显示,可以考虑使用递归方法进行实现。以下是一个基于C++的多叉树树形显示的示例代码:
```c++
#include <iostream>
#include <vector>
#include <string>
using namespace std;
struct TreeNode {
string name;
vector<TreeNode*> children;
};
void print(TreeNode* node, int level) {
for (int i = 0; i < level; i++) {
cout << " ";
}
cout << "+ " << node->name << endl;
for (int i = 0; i < node->children.size(); i++) {
print(node->children[i], level + 1);
}
}
int main() {
TreeNode* root = new TreeNode{"root", {}};
TreeNode* node1 = new TreeNode{"node1", {}};
TreeNode* node2 = new TreeNode{"node2", {}};
TreeNode* node3 = new TreeNode{"node3", {}};
TreeNode* node4 = new TreeNode{"node4", {}};
TreeNode* node5 = new TreeNode{"node5", {}};
TreeNode* node6 = new TreeNode{"node6", {}};
TreeNode* node7 = new TreeNode{"node7", {}};
TreeNode* node8 = new TreeNode{"node8", {}};
root->children.push_back(node1);
root->children.push_back(node2);
root->children.push_back(node3);
node1->children.push_back(node4);
node1->children.push_back(node5);
node2->children.push_back(node6);
node2->children.push_back(node7);
node3->children.push_back(node8);
print(root, 0);
return 0;
}
```
输出结果为:
```
+ root
+ node1
+ node4
+ node5
+ node2
+ node6
+ node7
+ node3
+ node8
```
在这个示例中,我们定义了一个 `TreeNode` 结构体,包含了节点的名称和子节点列表。 `print` 函数使用递归的方式遍历多叉树,并输出每个节点的名称和缩进量。在 `main` 函数中,我们创建了一个多叉树并进行了初始化,然后调用 `print` 函数输出树形结构。
需要注意的是,这个示例中只考虑了节点的名称,如果需要输出更多的信息,可以根据需要修改 `TreeNode` 结构体的定义和 `print` 函数的实现。