mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-06 15:09:40 +08:00
更新 0101.对称二叉树 排版格式修复
This commit is contained in:
@ -13,9 +13,11 @@
|
||||
|
||||

|
||||
|
||||
# 思路
|
||||
## 算法公开课
|
||||
|
||||
《代码随想录》算法视频公开课:[同时操作两个二叉树 | LeetCode:101. 对称二叉树](https://www.bilibili.com/video/BV1ue4y1Y7Mf),相信结合视频在看本篇题解,更有助于大家对本题的理解。
|
||||
**[《代码随想录》算法视频公开课](https://programmercarl.com/other/gongkaike.html):[同时操作两个二叉树 | LeetCode:101. 对称二叉树](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。
|
||||
|
||||
* 100.相同的树
|
||||
* 572.另一个树的子树
|
||||
* [100.相同的树](https://leetcode.cn/problems/same-tree/)
|
||||
* [572.另一个树的子树](https://leetcode.cn/problems/subtree-of-another-tree/)
|
||||
|
||||
# 其他语言版本
|
||||
## 其他语言版本
|
||||
|
||||
Java
|
||||
### Java:
|
||||
|
||||
```Java
|
||||
/**
|
||||
@ -364,7 +366,7 @@ Java
|
||||
|
||||
```
|
||||
|
||||
Python
|
||||
### Python:
|
||||
|
||||
递归法:
|
||||
```python
|
||||
@ -470,7 +472,8 @@ class Solution:
|
||||
return True
|
||||
```
|
||||
|
||||
Go
|
||||
### Go:
|
||||
|
||||
```go
|
||||
/**
|
||||
* Definition for a binary tree node.
|
||||
@ -521,8 +524,7 @@ func isSymmetric(root *TreeNode) bool {
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
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
|
||||
@ -761,7 +763,7 @@ func isSymmetric3(_ root: TreeNode?) -> Bool {
|
||||
}
|
||||
```
|
||||
|
||||
Scala
|
||||
### Scala:
|
||||
|
||||
> 递归:
|
||||
```scala
|
||||
@ -835,7 +837,7 @@ object Solution {
|
||||
}
|
||||
```
|
||||
|
||||
## Rust
|
||||
### Rust:
|
||||
|
||||
递归:
|
||||
```rust
|
||||
@ -900,3 +902,4 @@ impl Solution {
|
||||
<a href="https://programmercarl.com/other/kstar.html" target="_blank">
|
||||
<img src="../pics/网站星球宣传海报.jpg" width="1000"/>
|
||||
</a>
|
||||
|
||||
|
Reference in New Issue
Block a user