diff --git a/problems/0101.对称二叉树.md b/problems/0101.对称二叉树.md index 4418c62d..36b39740 100644 --- a/problems/0101.对称二叉树.md +++ b/problems/0101.对称二叉树.md @@ -13,9 +13,11 @@ ![101. 对称二叉树](https://code-thinking-1253855093.file.myqcloud.com/pics/20210203144607387.png) -# 思路 +## 算法公开课 -《代码随想录》算法视频公开课:[同时操作两个二叉树 | 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 { +