# 题目
实现二叉树的递归遍历
# 分析
遍历分为前序遍历,即中左右;中序遍历,左中右;后续遍历,左右根
递归实现,需要清楚递归三要素:
1. 递归函数的参数和返回值
2. 终止条件
3. 单层递归的逻辑
// 前序遍历 | |
class Solution { | |
public: | |
void traversal(TreeNode* cur, vector<int>& vec) { | |
if (cur == NULL) return; | |
vec.push_back(cur->val); // 中 | |
traversal(cur->left, vec); // 左 | |
traversal(cur->right, vec); // 右 | |
} | |
vector<int> preorderTraversal(TreeNode* root) { | |
vector<int> result; | |
traversal(root, result); | |
return result; | |
} | |
}; | |
// 中序遍历 | |
void traversal(TreeNode* cur, vector<int>& vec) { | |
if (cur == NULL) return; | |
traversal(cur->left, vec); // 左 | |
vec.push_back(cur->val); // 中 | |
traversal(cur->right, vec); // 右 | |
} | |
// 后续遍历 | |
void traversal(TreeNode* cur, vector<int>& vec) { | |
if (cur == NULL) return; | |
traversal(cur->left, vec); // 左 | |
traversal(cur->right, vec); // 右 | |
vec.push_back(cur->val); // 中 | |
} |