void inorderT(TreeNode *root,vector<int> &num,vector<TreeNode *> &nodes) { if(root->left != NULL) inorderT(root->left,num,nodes); num.push_back(root->val); nodes.push_back(root); if(root->right != NULL) inorderT(root->right,num,nodes); }
vector<int> inorderTraversal(TreeNode* root) { vector<int> res; inorderT(root, res); return res; }
void recoverTree(TreeNode *root) { // Start typing your C/C++ solution below // DO NOT write int main() function vector<int> num; vector<TreeNode *> nodes; inorderT(root,num,nodes); sort(num.begin(),num.end()); for(int i = 0;i < num.size();i++) { nodes[i]->val=num[i]; } }
void inorderT(TreeNode* root, vector<int>& res) { if (root == NULL) return ; if (root->left != NULL) inorderT(root->left, res); res.push_back(root->val); if (root->right != NULL) inorderT(root->right, res); }