C++11 tree menu
时间: 2023-10-09 19:11:10 浏览: 207
tree_menu(javascript)
4星 · 用户满意度95%
实现一个树形菜单可以使用C++11的标准库中的容器和算法,以下是一个简单的示例代码:
```C++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct TreeNode {
string name;
vector<TreeNode*> children;
TreeNode(string n) : name(n) {}
};
void printTree(TreeNode* node, int level) {
for (int i = 0; i < level; i++) {
cout << " ";
}
cout << "- " << node->name << endl;
for (auto child : node->children) {
printTree(child, 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");
root->children.push_back(node1);
root->children.push_back(node2);
node1->children.push_back(node3);
node1->children.push_back(node4);
node2->children.push_back(node5);
printTree(root, 0);
return 0;
}
```
这个示例代码中,我们使用了结构体 `TreeNode` 来表示树节点,其中包含了节点的名称和子节点列表。使用容器 `vector` 来存储子节点列表,可以方便地添加、删除和遍历子节点。在 `printTree` 函数中,我们使用递归方法遍历整个树,并且根据节点的层级打印出相应数量的缩进和连字符,最后输出节点名称。在 `main` 函数中,我们创建了一个简单的树形结构,并且调用 `printTree` 函数输出整个树形菜单。
以上仅是一个简单的树形菜单的示例代码,可以根据实际需求进行修改和扩展。
阅读全文