Skip to content

Commit

Permalink
1
Browse files Browse the repository at this point in the history
  • Loading branch information
Ainevsia committed Jul 25, 2023
1 parent 8ed29c4 commit 04e86d6
Show file tree
Hide file tree
Showing 4 changed files with 107 additions and 1 deletion.
4 changes: 3 additions & 1 deletion notes/src/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,4 +46,6 @@
- [Day 12](./day12.md)
- [Day 13](./day13.md)
- [239. 滑动窗口最大值](./day13/lc239.md)
- [347. 前 K 个高频元素](./day13/lc347.md)
- [347. 前 K 个高频元素](./day13/lc347.md)
- [day 14](./day14.md)
- [144. 二叉树的前序遍历](./day14/lc144.md)
1 change: 1 addition & 0 deletions notes/src/day13/lc239.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
## 解题思路

```rust
struct Solution {}
impl Solution {
pub fn max_sliding_window(v: Vec<i32>, k: i32) -> Vec<i32> {
let k = k as usize;
Expand Down
32 changes: 32 additions & 0 deletions notes/src/day14.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# 第六章 二叉树part01
今日内容:

● 理论基础
● 递归遍历
● 迭代遍历
● 统一迭代


详细布置

## 理论基础

需要了解 二叉树的种类,存储方式,遍历方式 以及二叉树的定义

文章讲解:https://programmercarl.com/%E4%BA%8C%E5%8F%89%E6%A0%91%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html

## 递归遍历 (必须掌握)

二叉树的三种递归遍历掌握其规律后,其实很简单

题目链接/文章讲解/视频讲解:https://programmercarl.com/%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E9%80%92%E5%BD%92%E9%81%8D%E5%8E%86.html

## 迭代遍历 (基础不好的录友,迭代法可以放过)

题目链接/文章讲解/视频讲解:https://programmercarl.com/%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E8%BF%AD%E4%BB%A3%E9%81%8D%E5%8E%86.html

## 统一迭代 (基础不好的录友,迭代法可以放过)

这是统一迭代法的写法, 如果学有余力,可以掌握一下

题目链接/文章讲解:https://programmercarl.com/%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E7%BB%9F%E4%B8%80%E8%BF%AD%E4%BB%A3%E6%B3%95.html
71 changes: 71 additions & 0 deletions notes/src/day14/lc144.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# 144. 二叉树的前序遍历

## 题目描述

## 解题思路

```cpp

/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
class Solution {
public:
vector<int> preorderTraversal(TreeNode* root) {
vector<int> res ;
traverse(root, res);
return res ;
}

void traverse(TreeNode* root, vector<int>& vec) {
if (root == NULL) return ;
vec.push_back(root->val);
traverse(root->left, vec);
traverse(root->right, vec);
}
};

```


递归的实现就是:每一次递归调用都会把函数的局部变量、参数值和返回地址等压入调用栈中

递归的实质就是迭代

统一格式法

```cpp
class Solution {
public:
vector<int> postorderTraversal(TreeNode* root) {
vector<int> res ;
vector<TreeNode *> s ;
if (root != NULL) s.push_back(root);
while (!s.empty()) {
TreeNode* last = s.back();
s.pop_back();
if (last == NULL) {
TreeNode* last = s.back();
s.pop_back();
res.push_back(last->val);
} else {
s.push_back(last);
s.push_back(NULL);
if (last->right) s.push_back(last->right);
if (last->left) s.push_back(last->left);
}
}
return res ;
}
};
```
## 学习感想

0 comments on commit 04e86d6

Please sign in to comment.