#include<stdcpp.h> using namespace std; struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode() : val(0), left(nullptr), right(nullptr) {} TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} }; void create(int * val, int cnt, TreeNode *cur,int idx){ int left_idx = (idx + 1) * 2 - 1; int right_idx = (idx + 1) * 2 ; if(left_idx >= cnt && right_idx >= cnt) { cur->left = nullptr; cur->right = nullptr; return; } if(val[left_idx] == -1 || left_idx >= cnt){ cur -> left = nullptr; }else{ TreeNode * left_child = new TreeNode(val[left_idx]); cur->left = left_child; create(val,cnt,left_child,left_idx); } if(val[right_idx] == -1 || right_idx >= cnt){ cur -> right = nullptr; }else{ TreeNode * right_child = new TreeNode(val[right_idx]); cur->right = right_child; create(val, cnt, right_child, right_idx); } return; } void traverse(TreeNode* node){ cout<<node->val<<' '; if(node->left != nullptr){ traverse(node->left); } if(node->right != nullptr){ traverse(node->right); } return; } TreeNode* createTree(int * val, int cnt){ TreeNode * root = new TreeNode(val[0]); cout<<"create a tree"<<endl; create(val,cnt,root, 0); traverse(root); cout<<"\ndone"<<endl; return root; } class Solution{ public: string traverse(TreeNode * node, string &str){ str.push_back((char)('0'+node->val)); if(node -> left == nullptr && node -> right == nullptr) return str; if(node -> left == nullptr){ str.push_back('('); str.push_back(')'); }else{ str.push_back('('); traverse(node->left, str); str.push_back(')'); } if(node -> right == nullptr){ return str; }else{ str.push_back('('); traverse(node->right, str); str.push_back(')'); return str; } } string tree2str(TreeNode * root){ string rlt = ""; return traverse(root,rlt); } }; int main(){ Solution sol; int ex1_val[4] = {1,2,3,4}; TreeNode * ex1 = createTree(ex1_val,4); cout<<sol.tree2str(ex1)<<endl; int ex2_val[5] = {1,2,3,-1,4}; TreeNode * ex2 = createTree(ex2_val, 5); cout<<sol.tree2str(ex2)<<endl; return 0; }