代码解析:
//二叉树:
//前序:根->左->右 //根在1号位置
//中序:左->根->右 //根在2号位置
//后序:左->有->根 //根在3号位置
//采用递归的方式:先找到左子树为空的节点(dfs(root->left)),返回这样就可以找到第一个左节点,接着将节点的值放进数组里面即可(ans.push_back(root->val))
//接着递归右子树,如果右子树不为空,就将值放进数组里面去,否则就会到上一层
class Solution {
public:
vector<int> ans;
vector<int> inorderTraversal(TreeNode* root)
{
if(root == nullptr) return ans;
dfs(root);
return ans;
}
void dfs(TreeNode* root)
{
if(root == nullptr) return ;
dfs(root->left);
ans.push_back(root->val);
dfs(root->right);
}
};
图解代码的递归过程:
那剩下的前序和后序也是一样的: