将树结构数据存储到数组中是一种常见的数据结构转换操作,可以通过遍历树的方式将树的节点按照一定规则存储到数组中。下面是一个用C++实现的示例代码:
#include <iostream>
#include <vector>
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
void inorderTraversal(TreeNode* root, std::vector<int>& result) {
if (root == nullptr) {
return;
}
inorderTraversal(root->left, result);
result.push_back(root->val);
inorderTraversal(root->right, result);
}
std::vector<int> treeToArray(TreeNode* root) {
std::vector<int> result;
inorderTraversal(root, result);
return result;
}
int main() {
// 构造一个示例树
TreeNode* root = new TreeNode(1);
root->left = new TreeNode(2);
root->right = new TreeNode(3);
root->left->left = new TreeNode(4);
root->left->right = new TreeNode(5);
// 将树结构数据存储到数组中
std::vector<int> array = treeToArray(root);
// 打印数组内容
for (int num : array) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
上述代码中,我们定义了一个树节点结构 TreeNode
,包含一个整数值 val
,以及左右子节点的指针。inorderTraversal
函数使用中序遍历的方式遍历树,并将节点的值存储到结果数组 result
中。treeToArray
函数调用 inorderTraversal
函数,并返回最终的结果数组。
在 main
函数中,我们构造了一个示例树,并调用 treeToArray
函数将树结构数据存储到数组中。最后,我们打印数组的内容。
这种将树结构数据存储到数组中的操作在一些算法和数据结构问题中经常用到,例如树的遍历、树的序列化与反序列化等。
云+社区技术沙龙[第17期]
腾讯云存储专题直播
小程序云开发官方直播课(应用开发实战)
第五届Techo TVP开发者峰会
第五届Techo TVP开发者峰会
DB TALK 技术分享会
云+社区沙龙online第6期[开源之道]
T-Day
云+社区沙龙online第5期[架构演进]
微搭低代码直播互动专栏
领取专属 10元无门槛券
手把手带您无忧上云