将树结构数据存储到数组中是一种常见的数据结构转换操作,可以通过遍历树的方式将树的节点按照一定规则存储到数组中。下面是一个用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
函数将树结构数据存储到数组中。最后,我们打印数组的内容。
这种将树结构数据存储到数组中的操作在一些算法和数据结构问题中经常用到,例如树的遍历、树的序列化与反序列化等。
领取专属 10元无门槛券
手把手带您无忧上云