- 前言
- 一、练习题目
- 二、思路及题解
- 1. LC144-二叉树的前序遍历
- 2. LC94-二叉树的中序遍历
- 3. LC145-二叉树的后序遍历
- 4. LC104-二叉树的最大深度
- 总结
前言
欢迎大家积极在评论区留言一起讨论交流,知无不言,言无不尽,共同进步。本文是 二叉树 专题,更多其他专题内容详见《LeetCode每月集训系列》
一、练习题目
| 题目链接 | 难度 | 备注 |
|---|---|---|
| 144. 二叉树的前序遍历 | ★☆☆☆☆ | |
| 94. 二叉树的中序遍历 | ★☆☆☆☆ | |
| 145. 二叉树的后序遍历 | ★☆☆☆☆ | |
| 104. 二叉树的最大深度 | ★☆☆☆☆ |
方法一:递归
(1)递归遍历,深度优先搜索。
代码如下:
class Solution {
public:
void preorder(TreeNode* root,vector& res) {
if (root == nullptr) {
return;
}
res.push_back(root->val);
preorder(root->left, res);
preorder(root->right, res);
}
vector preorderTraversal(TreeNode* root) {
vector res;
preorder(root, res);
return res;
}
};
2. LC94-二叉树的中序遍历
方法一:递归
(1)递归遍历,深度优先搜索。
代码如下:
class Solution {
public:
void inorder(TreeNode* root,vector& res) {
if (root == nullptr) {
return;
}
inorder(root->left, res);
res.push_back(root->val);
inorder(root->right, res);
}
vector inorderTraversal(TreeNode* root) {
vector res;
inorder(root, res);
return res;
}
};
3. LC145-二叉树的后序遍历
方法一:递归
(1)递归遍历,深度优先搜索。
代码如下:
class Solution {
public:
void postorder(TreeNode* root,vector& res) {
if (root == nullptr) {
return;
}
postorder(root->left, res);
postorder(root->right, res);
res.push_back(root->val);
}
vector postorderTraversal(TreeNode* root) {
vector res;
postorder(root, res);
return res;
}
};
4. LC104-二叉树的最大深度
方法一:深度优先搜索
(1)遍历,深度优先搜索。
代码如下:
class Solution {
public:
int maxDepth(TreeNode* root) {
if (root == nullptr) return 0;
return max(maxDepth(root->left), maxDepth(root->right)) + 1;
}
};
总结
题目难不要怕,只要每个月的每一天都坚持刷题学习,总有一天会熟练掌握的。欢迎加入【知识星球|英雄算法联盟】与我们一同早起刷刷刷⛽️



