通常树的深度都大于1,即树有多层,而树结构又可以用c++的map容器来实现,所以,本文给出了一种多层树结构的实现思路,同时也给出了相应的c++代码。
整体思路概述
首先定义一个节点类Node类,要包括children(用map容器实现),即用map结构来模拟子树,然后整棵树也用一个map结构来实现。因此,总体来说,就是用一个嵌套的map结构来实现多层树结构。以下给出每一步具体的描述 及相应的代码。
1、定义一个节点类Node类
定义树结构之前要先定义一个节点类Node类,要包括键、值、children等属性,并包括有参无参构造函数,此外,本文还实现了一个打印所有节点包括的键值对的函数(PrintTree函数)。
class Node {
public:
string key;
const char* value;
Node* left;
Node* right;
map<string, Node*> children;
Node() {}
Node(const string& k) : key(k) {}
Node(const string& k, const char* v) :key(k), value(v) {}
void PrintTree(const Node& node, int level = 0) {
for (int i = 0; i < level; ++i) {
cout << " ";
}
cout << "- " << node.key << " " << node.value << endl;
for (const auto& pair : node.children) {
PrintTree(*pair.second, level + 1);