/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ class Solution { public: /** * * @param root TreeNode类 the root of binary tree * @return int整型vector<vector<>> */ vector<vector<int> > threeOrders(TreeNode* root) { vector<vector<int>> res; auto q = root; res.push_back(pre(q)); res.push_back(mid(q)); res.push_back(pos(q)); return res; } vector<int > ans1; vector<int> pre(TreeNode* root){ if(root==nullptr) return ans1; auto left = root->left; // 此处不需要while(root),当递归到根节点时候,会自动return ans1; auto right = root->right; ans1.push_back(root->val); pre(left); pre(right); return ans1; } vector<int> ans2; vector<int> mid(TreeNode* root){ if(root==nullptr) return ans2; auto left = root->left; auto right = root->right; mid(left); ans2.push_back(root->val); mid(right); return ans2; } vector<int> ans3; vector<int> pos(TreeNode* root){ if(root==nullptr) return ans3; auto left = root->left; auto right = root->right; pos(left); pos(right); ans3.push_back(root->val); return ans3; } };