描述
给定一棵二叉树,分别按照二叉树先序,中序和后序打印所有的节点。
数据范围:
0
≤
n
≤
1000
0 \le n \le 1000
0≤n≤1000,树上每个节点的val值满足0≤val≤100
要求:空间复杂度 O(n),时间复杂度 O(n)
样例解释:
如图二叉树结构
示例1
输入:{1,2,3}
返回值:[[1,2,3],[2,1,3],[2,3,1]]
说明:如题面图
示例2
输入:{}
返回值:[[],[],[]]
备注: n ≤ 1 0 6 n \leq 10^6 n≤106
代码
/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
class Solution {
public:
/**
*
* @param root TreeNode类 the root of binary tree
* @return int整型vector<vector<>>
*/
void Traverse(TreeNode*root,vector<int> &v1,vector<int> &v2,vector<int> &v3){
if(root==nullptr)
return;
v1.push_back(root->val);
Traverse(root->left, v1, v2, v3);
v2.push_back(root->val);
Traverse(root->right, v1, v2, v3);
v3.push_back(root->val);
}
vector<vector<int> > threeOrders(TreeNode* root) {
// write code here
vector<int> v1,v2,v3;
vector<vector<int>> vec;
Traverse(root, v1, v2, v3);
vec.push_back(v1);
vec.push_back(v2);
vec.push_back(v3);
return vec;
}
};