题目来源于知识星球—英雄算法联盟,五月算法集训专题
目录
前言
跟随英雄算法联盟博主—英雄哪里出来,每天完成相应的算法练习,一个月后,必定会有所成长!
一、144.二叉树的前序遍历(简单)
1.题目描述
2.解题思路
今天的这几道题都是用递归的方法求解,属于模板题,记下模板即可。
3.代码演示(C++)
class Solution
{
vector<int>ans;
void dfs(TreeNode* root)
{
if(root)
{//先访问左子树,再访问右子树
ans.push_back(root->val);
dfs(root->left);
dfs(root->right);
}
}
public:
vector<int> preorderTraversal(TreeNode* root)
{
ans.clear();
dfs(root);
return ans;
}
};
4.题目链接
二、94.二叉树的中序遍历(简单)
1.题目描述
2.解题思路
模板
3.代码演示(C++)
class Solution
{
vector<int>ans;
void dfs(TreeNode* root)
{
if(root)
{
dfs(root->left);
ans.push_back(root->val);
dfs(root->right);
}
}
public:
vector<int> inorderTraversal(TreeNode* root)
{
ans.clear();
dfs(root);
return ans;
}
};
4.题目链接
三、145.二叉树的后序遍历(简单)
1.题目描述
2.解题思路
模板
3.代码演示(C++)
class Solution
{
vector<int>ans;
void dfs(TreeNode* root)
{
if(root)
{
dfs(root->left);
dfs(root->right);
ans.push_back(root->val);
}
}
public:
vector<int> postorderTraversal(TreeNode* root)
{
ans.clear();
dfs(root);
return ans;
}
};
4.题目链接
四、104.二叉树的最大深度(简单)
1.题目描述
2.解题思路
采用递归的思想,二叉树的最大深度等于左子树或右子树的最大深度+1.
3.代码演示(C++)
class Solution
{
public:
int maxDepth(TreeNode* root)
{
if(root==nullptr)
{
return 0;
}
else
{
return max(maxDepth(root->right),maxDepth(root->left))+1;
}
}
};
4.题目链接
总结
每天跟随英雄哥学习相关的算法,一个月会收获很多,如果你想了解更多关于知识星球的内容,欢迎联系我!