Skip to content

Commit

Permalink
'a'
Browse files Browse the repository at this point in the history
  • Loading branch information
Ainevsia committed Jul 26, 2023
1 parent 04e86d6 commit f22c295
Show file tree
Hide file tree
Showing 5 changed files with 184 additions and 1 deletion.
6 changes: 5 additions & 1 deletion notes/src/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,4 +48,8 @@
- [239. 滑动窗口最大值](./day13/lc239.md)
- [347. 前 K 个高频元素](./day13/lc347.md)
- [day 14](./day14.md)
- [144. 二叉树的前序遍历](./day14/lc144.md)
- [144. 二叉树的前序遍历](./day14/lc144.md)
- [day 15](./day15.md)
- [102. 二叉树的层序遍历](./day15/lc102.md)
- [226. 翻转二叉树](./day15/lc226.md)
- [101. 对称二叉树](./day15/lc101.md)
27 changes: 27 additions & 0 deletions notes/src/day15.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# 第六章 二叉树 part02

今日内容:

● 层序遍历 10
● 226.翻转二叉树
● 101.对称二叉树 2

详细布置

## 层序遍历

看完本篇可以一口气刷十道题,试一试, 层序遍历并不难,大家可以很快刷了十道题。

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

## 226.翻转二叉树 (优先掌握递归)

这道题目 一些做过的同学 理解的也不够深入,建议大家先看我的视频讲解,无论做过没做过,都会有很大收获。

题目链接/文章讲解/视频讲解:https://programmercarl.com/0226.%E7%BF%BB%E8%BD%AC%E4%BA%8C%E5%8F%89%E6%A0%91.html

## 101. 对称二叉树 (优先掌握递归)

先看视频讲解,会更容易一些。

题目链接/文章讲解/视频讲解:https://programmercarl.com/0101.%E5%AF%B9%E7%A7%B0%E4%BA%8C%E5%8F%89%E6%A0%91.html
34 changes: 34 additions & 0 deletions notes/src/day15/lc101.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# 101. 对称二叉树

## 题目描述
## 解题思路

```python
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def f(self,a,b):
if a == None and b != None:
return False
elif a == None and b == None:
return True
elif a != None and b == None:
return False
else:
if a.val != b.val:
return False
else:
res1 = self.f(a.left, b.right)
res2 = self.f(a.right, b.left)
return res1 and res2
def isSymmetric(self, root: Optional[TreeNode]) -> bool:
if root == None:
return True
else:
return self.f(root.left, root.right)
```
## 学习感想
91 changes: 91 additions & 0 deletions notes/src/day15/lc102.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
# 102. 二叉树的层序遍历

## 题目描述

给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。

## 解题思路

```cpp
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
vector<vector<int>> res ;
if (root == NULL) return res ;
deque<TreeNode*> v;
v.push_back(root);
while (!v.empty()) {
int size = v.size();
vector<int> level_res ;
for (int i = 0; i < size; i ++) {
TreeNode * ptr = v.front();
v.pop_front();
level_res.push_back(ptr->val);
if (ptr->left) v.push_back(ptr->left);
if (ptr->right) v.push_back(ptr->right);
}
res.push_back(level_res) ;
}
return res;
}
};
```
## 学习感想
### 107. 二叉树的层序遍历 II
```cpp
class Solution {
public:
vector<vector<int>> levelOrderBottom(TreeNode* root) {
vector<vector<int>> res ;
if (root == NULL) return res ;
deque<TreeNode*> v;
v.push_back(root);
while (!v.empty()) {
int size = v.size();
vector<int> level_res ;
for (int i = 0; i < size; i ++) {
TreeNode * ptr = v.front();
v.pop_front();
level_res.push_back(ptr->val);
if (ptr->left) v.push_back(ptr->left);
if (ptr->right) v.push_back(ptr->right);
}
res.push_back(level_res) ;
}
reverse(res.begin(),res.end());
return res;
}
};
```

### 199. 二叉树的右视图

```cpp
class Solution {
public:
vector<int> rightSideView(TreeNode* root) {
vector<int> res ;
if (root == NULL) return res ;
deque<TreeNode*> v;
v.push_back(root);
while (!v.empty()) {
int size = v.size();
vector<int> level_res ;
for (int i = 0; i < size; i ++) {
TreeNode * ptr = v.front();
v.pop_front();
level_res.push_back(ptr->val);
if (ptr->left) v.push_back(ptr->left);
if (ptr->right) v.push_back(ptr->right);
}
res.push_back(level_res.back());
}
return res;
}
};
```
### 637. 二叉树的层平均值
27 changes: 27 additions & 0 deletions notes/src/day15/lc226.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# 226. 翻转二叉树

## 题目描述

给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。



## 解题思路


```cpp
class Solution {
public:
TreeNode* invertTree(TreeNode* root) {
traverse(root);
return root;
}
void traverse(TreeNode* root) {
if (root == NULL) return ;
swap(root->left, root->right);
traverse(root->left);
traverse(root->right);
}
};
```
## 学习感想

0 comments on commit f22c295

Please sign in to comment.