#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) {
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() {
// Example usage:
// Constructing a binary tree
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);
// Converting the tree to an array
std::vector<int> result = treeToArray(root);
// Displaying the result
std::cout << "Array representation of the tree: [";
for (int i = 0; i < result.size(); ++i) {
std::cout << result[i];
if (i < result.size() - 1) {
std::cout << ", ";
}
}
std::cout << "]" << std::endl;
// Clean up memory
delete root->left->left;
delete root->left->right;
delete root->left;
delete root->right;
delete root;
return 0;
}