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