/**
* 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;
}
};