mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-10 20:40:39 +08:00
update 0101.对称二叉树: 更改错字,优化代码风格
This commit is contained in:
@ -21,7 +21,7 @@
|
|||||||
|
|
||||||
对于二叉树是否对称,要比较的是根节点的左子树与右子树是不是相互翻转的,理解这一点就知道了**其实我们要比较的是两个树(这两个树是根节点的左右子树)**,所以在递归遍历的过程中,也是要同时遍历两棵树。
|
对于二叉树是否对称,要比较的是根节点的左子树与右子树是不是相互翻转的,理解这一点就知道了**其实我们要比较的是两个树(这两个树是根节点的左右子树)**,所以在递归遍历的过程中,也是要同时遍历两棵树。
|
||||||
|
|
||||||
那么如果比较呢?
|
那么如何比较呢?
|
||||||
|
|
||||||
比较的是两个子树的里侧和外侧的元素是否相等。如图所示:
|
比较的是两个子树的里侧和外侧的元素是否相等。如图所示:
|
||||||
|
|
||||||
@ -244,7 +244,7 @@ public:
|
|||||||
|
|
||||||
这次我们又深度剖析了一道二叉树的“简单题”,大家会发现,真正的把题目搞清楚其实并不简单,leetcode上accept了和真正掌握了还是有距离的。
|
这次我们又深度剖析了一道二叉树的“简单题”,大家会发现,真正的把题目搞清楚其实并不简单,leetcode上accept了和真正掌握了还是有距离的。
|
||||||
|
|
||||||
我们介绍了递归法和迭代法,递归依然通过递归三部曲来解决了这道题目,如果只看精简的代码根本看不出来递归三部曲是如果解题的。
|
我们介绍了递归法和迭代法,递归依然通过递归三部曲来解决了这道题目,如果只看精简的代码根本看不出来递归三部曲是如何解题的。
|
||||||
|
|
||||||
在迭代法中我们使用了队列,需要注意的是这不是层序遍历,而且仅仅通过一个容器来成对的存放我们要比较的元素,知道这一本质之后就发现,用队列,用栈,甚至用数组,都是可以的。
|
在迭代法中我们使用了队列,需要注意的是这不是层序遍历,而且仅仅通过一个容器来成对的存放我们要比较的元素,知道这一本质之后就发现,用队列,用栈,甚至用数组,都是可以的。
|
||||||
|
|
||||||
@ -259,7 +259,7 @@ public:
|
|||||||
|
|
||||||
# 其他语言版本
|
# 其他语言版本
|
||||||
|
|
||||||
## Java
|
Java
|
||||||
|
|
||||||
```Java
|
```Java
|
||||||
/**
|
/**
|
||||||
@ -364,7 +364,7 @@ public:
|
|||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Python
|
Python
|
||||||
|
|
||||||
递归法:
|
递归法:
|
||||||
```python
|
```python
|
||||||
@ -464,8 +464,7 @@ class Solution:
|
|||||||
return True
|
return True
|
||||||
```
|
```
|
||||||
|
|
||||||
## Go
|
Go
|
||||||
|
|
||||||
```go
|
```go
|
||||||
/**
|
/**
|
||||||
* Definition for a binary tree node.
|
* Definition for a binary tree node.
|
||||||
@ -488,10 +487,12 @@ func defs(left *TreeNode, right *TreeNode) bool {
|
|||||||
}
|
}
|
||||||
return defs(left.Left, right.Right) && defs(right.Left, left.Right);
|
return defs(left.Left, right.Right) && defs(right.Left, left.Right);
|
||||||
}
|
}
|
||||||
|
|
||||||
func isSymmetric(root *TreeNode) bool {
|
func isSymmetric(root *TreeNode) bool {
|
||||||
return defs(root.Left, root.Right);
|
return defs(root.Left, root.Right);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 迭代
|
// 迭代
|
||||||
func isSymmetric(root *TreeNode) bool {
|
func isSymmetric(root *TreeNode) bool {
|
||||||
var queue []*TreeNode;
|
var queue []*TreeNode;
|
||||||
@ -515,7 +516,7 @@ func isSymmetric(root *TreeNode) bool {
|
|||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
## JavaScript
|
JavaScript
|
||||||
|
|
||||||
递归判断是否为对称二叉树:
|
递归判断是否为对称二叉树:
|
||||||
```javascript
|
```javascript
|
||||||
@ -568,6 +569,7 @@ var isSymmetric = function(root) {
|
|||||||
queue.push(leftNode.right); //左节点右孩子入队
|
queue.push(leftNode.right); //左节点右孩子入队
|
||||||
queue.push(rightNode.left); //右节点左孩子入队
|
queue.push(rightNode.left); //右节点左孩子入队
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
```
|
```
|
||||||
@ -597,11 +599,12 @@ var isSymmetric = function(root) {
|
|||||||
stack.push(leftNode.right); //左节点右孩子入队
|
stack.push(leftNode.right); //左节点右孩子入队
|
||||||
stack.push(rightNode.left); //右节点左孩子入队
|
stack.push(rightNode.left); //右节点左孩子入队
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
## TypeScript:
|
TypeScript:
|
||||||
|
|
||||||
> 递归法
|
> 递归法
|
||||||
|
|
||||||
@ -670,7 +673,7 @@ function isSymmetric(root: TreeNode | null): boolean {
|
|||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
## Swift:
|
Swift:
|
||||||
|
|
||||||
> 递归
|
> 递归
|
||||||
```swift
|
```swift
|
||||||
@ -752,7 +755,7 @@ func isSymmetric3(_ root: TreeNode?) -> Bool {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
## Scala
|
Scala
|
||||||
|
|
||||||
> 递归:
|
> 递归:
|
||||||
```scala
|
```scala
|
||||||
|
Reference in New Issue
Block a user