一、二叉树的递归遍历
前序遍历
给你二叉树的根节点 root ,返回它节点值的 前序 遍历。
示例1:
输入:root = [1,null,2,3]
输出:[1,2,3]
思路
递归遍历,把握好递归推出条件、递归体、函数返回类型。
实现代码
1.前序遍历
//cpp
class Solution {
public:
void traversal(TreeNode *r,vector<int> &vec){
if(r==NULL){
return;
}
vec.push_back(r->val);
traversal(r->left,vec);
traversal(r->right,vec);
}
vector<int> preorderTraversal(TreeNode* root) {
vector<int> res;
traversal(root,res);
return res;
}
};
2.中序遍历
//cpp
class Solution {
public:
void traversal(TreeNode *r,vector<int> &vec){
if(r==NULL){
return;
}
traversal(r->left,vec);
vec.push_back(r->val);
traversal(r->right,vec);
}
vector<int> inorderTraversal(TreeNode* root) {
vector<int> res;
traversal(root,res);
return res;
}
};
3.后续遍历
//cpp
class Solution {
public:
void traversal(TreeNode *r,vector<int> &vec){
if(r==NULL){
return;
}
traversal(r->left,vec);
traversal(r->right,vec);
vec.push_back(r->val);
}
vector<int> postorderTraversal(TreeNode* root) {
vector<int> res;
traversal(root,res);
return res;
}
};
总结
二叉树递归遍历是基础,主要运用了栈的先进后出特性。