1.确定递归函数的参数和返回值
void traversal(TreeNode* node, vector<int>& vec)
node是当前处理节点,vec用来存储结果,无返回值
2.确定终止条件
if (node == NULL) return;
递归结束的标志是当前节点为空
3.确定单层递归的逻辑
前序遍历是中左右顺序,中序遍历是左中右顺序,后序遍历是左右中顺序。根据遍历顺序,即排列下列三行代码,保存结果。
vec.push_back(node->val);
traversal(node->left);
traversal(node->right);
class Solution {
public:
vector<int> inorderTraversal(TreeNode* root) {
vector<int> result;
traversal(root, result);
return result;
}
void traversal(TreeNode* node, vector<int>& vec) {
if (node == NULL) return;
vec.push_back(node->val); //中
traversal(node->left); //左
traversal(node->right); //右
}
}
class Solution {
public:
vector<int> inorderTraversal(TreeNode* root) {
vector<int> result;
traversal(root, result);
return result;
}
void traversal(TreeNode* node, vector<int>& vec) {
if (node == NULL) return;
traversal(node->left); //左
vec.push_back(node->val); //中
traversal(node->right); //右
}
}
class Solution {
public:
vector<int> inorderTraversal(TreeNode* root) {
vector<int> result;
traversal(root, result);
return result;
}
void traversal(TreeNode* node, vector<int>& vec) {
if (node == NULL) return;
traversal(node->left); //左
traversal(node->right); //右
vec.push_back(node->val); //中
}
}
你适合学Java吗?4大专业测评方法
代码逻辑 吸收能力 技术学习能力 综合素质
先测评确定适合在学习