二叉树遍历系列之一(递归遍历)
因递归遍历比较简单,也不是本系列的重点。三种形式遍历的递归代码十分相似,此处不再赘述过程,直接po代码了。
(以下代码均已leetcode上的problem为框架编写,经测试可通过leetcode test)
1.前序遍历
class Solution {
public:
vector<int> preorderTraversal(TreeNode* root) {
vector<int> result;
recur_traver(root,result);
return result;
}
void recur_traver(TreeNode *root,vector<int> &res) {
if(root) {
res.push_back(root->val);
recur_traver(root->left,res);
recur_traver(root->right,res);
}
}
};
2.中序遍历
class Solution {
public:
vector<int> inorderTraversal(TreeNode* root) {
vector<int> res;
recur_inorder(root,res);
return res;
}
void recur_inorder(TreeNode *root,vector<int> &res) {
if(root) {
recur_inorder(root->left,res);
res.push_back(root->val);
recur_inorder(root->right,res);
}
}
};
3.后序遍历
class Solution {
public:
vector<int> postorderTraversal(TreeNode* root) {
vector<int> res;
postorder_recur(root,res);
return res;
}
void postorder_recur(TreeNode *root,vector<int> &res) {
if(root) {
postorder_recur(root->left,res);
postorder_recur(root->right,res);
res.push_back(root->val);
}
}
};
浙公网安备 33010602011771号