前序 : 根左右
中序 :左根右
后续 : 左右根
前序
class Solution {
public:
void pres(TreeNode* root, vector<int> &v)
{
if(root == nullptr) return ;
v.push_back(root -> val);
pres(root -> left, v);
pres(root -> right, v);
}
vector<int> preorderTraversal(TreeNode* root) {
vector<int> v;
pres(root, v);
return v;
}
};
中序
class Solution {
public:
void pres(TreeNode* root, vector<int> &v)
{
if(root == nullptr) return;
pres(root -> left, v);
v.push_back(root -val);
pres(root -> right, v);
}
vector<int> inorderTraversal(TreeNode* root) {
vector<int> v;
pres(root, v);
return v;
}
};
后序列
class Solution {
public:
void pres(TreeNode* root, vector<int> &v)
{
if(root == nullptr) return;
pres(root -> left, v);
pres(root -> right, v);
v.push_back(root -> val);
}
vector<int> postorderTraversal(TreeNode* root) {
vector<int> v;
pres(root, v);
return v;
}
};