【c++】利用嵌套map创建多层树结构

通常树的深度都大于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);
		 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值