1、题目
给定一棵二叉树,分别按照二叉树先序,中序和后序打印所有的节点。
数据范围:0≤n≤1000,树上每个节点的val值满足 0≤val≤100
要求:空间复杂度 O(n),时间复杂度O(n)。
例如:
输入:{1,2,3}
输出:[[1,2,3],[2,1,3],[2,3,1]]
2、思路
思路一:用递归的方法,先序:根左右, 中序:左根右,后序:左右根
3、代码
class Solution {
public:
/**
*
* @param root TreeNode类 the root of binary tree
* @return int整型vector<vector<>>
*/
vector<int> m_preorder, m_midorder, m_lastorder;
vector<vector<int> > res;
vector<vector<int> > threeOrders(TreeNode* root) {
// write code here
preorder(root);
midorder(root);
lastorder(root);
res.push_back(m_preorder);
res.push_back(m_midorder);
res.push_back(m_lastorder);
return res;
}
void preorder(TreeNode* root){
if (!root) return;
m_preorder.push_back(root->val);
preorder(root->left);
preorder(root->right);
}
void midorder(TreeNode* root){
if (!root) return;
midorder(root->left);
m_midorder.push_back(root->val);
midorder(root->right);
}
void lastorder(TreeNode* root){
if (!root) return;
lastorder(root->left);
lastorder(root->right);
m_lastorder.push_back(root->val);
}
};```