/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * }; */ class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 the root of binary tree * @return int整型vector<vector<>> */ vector<int> a; vector<int> b; vector<int> c; // 前序遍历,先访问根节点,再递归遍历左子树和右子树 void preorder(TreeNode* root) { if (root == nullptr) { return; } a.push_back(root->val); preorder(root->left); preorder(root->right); } // 中序遍历,先递归遍历左子树,再访问根节点,最后递归遍历右子树 void preorder1(TreeNode* root) { if (root == nullptr) { return; } preorder1(root->left); b.push_back(root->val); preorder1(root->right); } // 后序遍历,先递归遍历左子树和右子树,再访问根节点 void preorder2(TreeNode* root) { if (root == nullptr) { return; } preorder2(root->left); preorder2(root->right); c.push_back(root->val); } vector<vector<int>> threeOrders(TreeNode* root) { // write code here vector<vector<int>> ss; preorder(root); preorder1(root); preorder2(root); ss.push_back(a); ss.push_back(b); ss.push_back(c); return ss; } };