请用递归方式实现二叉树的先序、中序和后序的遍历打印。
给定一个二叉树的根结点root,请依次返回二叉树的先序,中序和后续遍历(二维数组的形式)。
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};*/
class TreeToSequence {
public:
vector<vector<int> > convert(TreeNode* root) {
vector<int> temp;
vector<vector<int>> res;
preorder(root,temp);
res.push_back(temp);
temp.clear();
midorder(root,temp);
res.push_back(temp);
temp.clear();
postorder(root,temp);
res.push_back(temp);
temp.clear();
return res;
}
// 先序遍历
void preorder(TreeNode *root,vector<int> &temp){
if(root==NULL) return ;
temp.push_back(root->val);
preorder(root->left,temp);
preorder(root->right,temp);
}
// 中序遍历
void midorder(TreeNode *root,vector<int> &temp){
if(root==NULL) return ;
midorder(root->left,temp);
temp.push_back(root->val);
midorder(root->right,temp);
}
// 后序遍历
void postorder(TreeNode *root,vector<int> &temp){
if(root==NULL) return ;
postorder(root->left,temp);
postorder(root->right,temp);
temp.push_back(root->val);
}
};