更新 0101.对称二叉树 排版格式修复

This commit is contained in:
jinbudaily
2023-07-21 14:46:55 +08:00
parent 1abe3506ea
commit 49a3869174

View File

@ -13,9 +13,11 @@
![101. 对称二叉树](https://code-thinking-1253855093.file.myqcloud.com/pics/20210203144607387.png) ![101. 对称二叉树](https://code-thinking-1253855093.file.myqcloud.com/pics/20210203144607387.png)
# 思路 ## 算法公开课
《代码随想录》算法视频公开课:[同时操作两个二叉树 | LeetCode101. 对称二叉树](https://www.bilibili.com/video/BV1ue4y1Y7Mf),相信结合视频看本篇题解,更有助于大家对本题的理解。 **[《代码随想录》算法视频公开课](https://programmercarl.com/other/gongkaike.html)[同时操作两个二叉树 | LeetCode101. 对称二叉树](https://www.bilibili.com/video/BV1ue4y1Y7Mf) 相信结合视频看本篇题解,更有助于大家对本题的理解**
## 思路
**首先想清楚,判断对称二叉树要比较的是哪两个节点,要比较的可不是左右节点!** **首先想清楚,判断对称二叉树要比较的是哪两个节点,要比较的可不是左右节点!**
@ -41,7 +43,7 @@
那么我们先来看看递归法的代码应该怎么写。 那么我们先来看看递归法的代码应该怎么写。
## 递归法 ### 递归法
递归三部曲 递归三部曲
@ -159,13 +161,13 @@ public:
**所以建议大家做题的时候,一定要想清楚逻辑,每一步做什么。把题目所有情况想到位,相应的代码写出来之后,再去追求简洁代码的效果。** **所以建议大家做题的时候,一定要想清楚逻辑,每一步做什么。把题目所有情况想到位,相应的代码写出来之后,再去追求简洁代码的效果。**
## 迭代法 ### 迭代法
这道题目我们也可以使用迭代法,但要注意,这里的迭代法可不是前中后序的迭代写法,因为本题的本质是判断两个树是否是相互翻转的,其实已经不是所谓二叉树遍历的前中后序的关系了。 这道题目我们也可以使用迭代法,但要注意,这里的迭代法可不是前中后序的迭代写法,因为本题的本质是判断两个树是否是相互翻转的,其实已经不是所谓二叉树遍历的前中后序的关系了。
这里我们可以使用队列来比较两个树(根节点的左右子树)是否相互翻转,(**注意这不是层序遍历** 这里我们可以使用队列来比较两个树(根节点的左右子树)是否相互翻转,(**注意这不是层序遍历**
### 使用队列 #### 使用队列
通过队列来判断根节点的左子树和右子树的内侧和外侧是否相等,如动画所示: 通过队列来判断根节点的左子树和右子树的内侧和外侧是否相等,如动画所示:
@ -207,7 +209,7 @@ public:
}; };
``` ```
### 使用栈 #### 使用栈
细心的话,其实可以发现,这个迭代法,其实是把左右两个子树要比较的元素顺序放进一个容器,然后成对成对的取出来进行比较,那么其实使用栈也是可以的。 细心的话,其实可以发现,这个迭代法,其实是把左右两个子树要比较的元素顺序放进一个容器,然后成对成对的取出来进行比较,那么其实使用栈也是可以的。
@ -254,12 +256,12 @@ public:
这两道题目基本和本题是一样的只要稍加修改就可以AC。 这两道题目基本和本题是一样的只要稍加修改就可以AC。
* 100.相同的树 * [100.相同的树](https://leetcode.cn/problems/same-tree/)
* 572.另一个树的子树 * [572.另一个树的子树](https://leetcode.cn/problems/subtree-of-another-tree/)
# 其他语言版本 ## 其他语言版本
Java ### Java:
```Java ```Java
/** /**
@ -364,7 +366,7 @@ Java
``` ```
Python ### Python:
递归法: 递归法:
```python ```python
@ -470,7 +472,8 @@ class Solution:
return True return True
``` ```
Go ### Go:
```go ```go
/** /**
* Definition for a binary tree node. * Definition for a binary tree node.
@ -521,8 +524,7 @@ func isSymmetric(root *TreeNode) bool {
} }
``` ```
### JavaScript:
JavaScript
递归判断是否为对称二叉树: 递归判断是否为对称二叉树:
```javascript ```javascript
@ -610,7 +612,7 @@ var isSymmetric = function(root) {
}; };
``` ```
TypeScript ### TypeScript
> 递归法 > 递归法
@ -679,7 +681,7 @@ function isSymmetric(root: TreeNode | null): boolean {
}; };
``` ```
Swift: ### Swift:
> 递归 > 递归
```swift ```swift
@ -761,7 +763,7 @@ func isSymmetric3(_ root: TreeNode?) -> Bool {
} }
``` ```
Scala ### Scala:
> 递归: > 递归:
```scala ```scala
@ -835,7 +837,7 @@ object Solution {
} }
``` ```
## Rust ### Rust:
递归: 递归:
```rust ```rust
@ -900,3 +902,4 @@ impl Solution {
<a href="https://programmercarl.com/other/kstar.html" target="_blank"> <a href="https://programmercarl.com/other/kstar.html" target="_blank">
<img src="../pics/网站星球宣传海报.jpg" width="1000"/> <img src="../pics/网站星球宣传海报.jpg" width="1000"/>
</a> </a>