请用递归方式实现二叉树的先序、中序和后序的遍历打印。
给定一个二叉树的根结点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) {
// write code here
vector<
int
>vec2;
vector<
int
>vec3;
vector<
int
>vec4;
vector<vector<
int
> >vec1;
preOrder(vec2,root);
midOrder(vec3,root);
afOrder(vec4,root);
vec1.push_back(vec2);
vec1.push_back(vec3);
vec1.push_back(vec4);
return
vec1;
}
void
preOrder(vector<
int
>&vec,TreeNode* root){
if
(root==NULL)
return
;
vec.push_back(root->val);
preOrder(vec,root->left);
preOrder(vec,root->right);
}
void
midOrder(vector<
int
>&vec,TreeNode* root){
if
(root==NULL)
return
;
midOrder(vec,root->left);
vec.push_back(root->val);
midOrder(vec,root->right);
}
void
afOrder(vector<
int
>&vec,TreeNode* root){
if
(root==NULL)
return
;
afOrder(vec,root->left);
afOrder(vec,root->right);
vec.push_back(root->val);
}
};