class Solution {
public:
//创建三个容器用于存前序、中序、后序遍历的结果
vector<int>pre;
vector<int>mid;
vector<int>post;
vector<vector<int> > threeOrders(TreeNode* root) {
//只要根节点存在,就求这棵树的前序、中序、后序
if(root!=nullptr){
preorder(root);
midorder(root);
postorder(root);
}
//用一个二维的vector用来存前中后序的结果
vector<vector<int>> res{pre,mid,post};
return res;
}
//先序遍历
void preorder(TreeNode* root){
//如果没有节点了,就直接结束
if(root==nullptr){
return;
}
//否则,先序遍历:根左右(将根放入容器中)(递归遍历)
pre.push_back(root->val);
preorder(root->left);
preorder(root->right);
}
void midorder(TreeNode* root){
//没有节点,结束
if(root==nullptr){
return;
}
//中序遍历:左根右(递归)(根入容器)
midorder(root->left);
mid.push_back(root->val);
midorder(root->right);
}
void postorder(TreeNode* root){
//没有节点,结束
if(root==nullptr){
return;
}
//后序遍历:左右根(递归)(根入容器)
postorder(root->left);
postorder(root->right);
post.push_back(root->val);
}
};