/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * }; */ #include <ios> class Solution { private: vector<vector<int>> fin_ans; vector<int> preans, midans, sufans; void pre(TreeNode* root){//---------前序遍历 根左右 preans.push_back(root->val);//------先存根 if (root->left != nullptr)//-----------能往左走就往左走 pre(root->left); if (root->right != nullptr)//---------左边走完再走右边 pre(root->right); } void mid(TreeNode* root){//---------中序遍历 左跟右 if (root->left != nullptr) mid(root->left); midans.push_back(root->val); if (root->right != nullptr) mid(root->right); } void suf(TreeNode* root){//----------后续遍历 左右跟 if (root->left != nullptr) suf(root->left); if (root->right != nullptr) suf(root->right); sufans.push_back(root->val); } public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * @brief 如题所诉😘 * * @param root TreeNode类 the root of binary tree * @return int整型vector<vector<>> */ vector<vector<int> > threeOrders(TreeNode* root) { // write code here if (root != nullptr){ pre(root); mid(root); suf(root); } fin_ans.push_back(preans); fin_ans.push_back(midans); fin_ans.push_back(sufans); return fin_ans; } };