mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-09 19:44:45 +08:00
更新 0235.二叉搜索树的最近公共祖先 排版格式修复
This commit is contained in:
@ -36,11 +36,11 @@
|
|||||||
* 所有节点的值都是唯一的。
|
* 所有节点的值都是唯一的。
|
||||||
* p、q 为不同节点且均存在于给定的二叉搜索树中。
|
* p、q 为不同节点且均存在于给定的二叉搜索树中。
|
||||||
|
|
||||||
# 算法公开课
|
## 算法公开课
|
||||||
|
|
||||||
**《代码随想录》算法视频公开课:[二叉搜索树找祖先就有点不一样了!| 235. 二叉搜索树的最近公共祖先](https://www.bilibili.com/video/BV1Zt4y1F7ww?share_source=copy_web),相信结合视频在看本篇题解,更有助于大家对本题的理解**。
|
**[《代码随想录》算法视频公开课](https://programmercarl.com/other/gongkaike.html):[二叉搜索树找祖先就有点不一样了!| 235. 二叉搜索树的最近公共祖先](https://www.bilibili.com/video/BV1Zt4y1F7ww?share_source=copy_web),相信结合视频在看本篇题解,更有助于大家对本题的理解**。
|
||||||
|
|
||||||
# 思路
|
## 思路
|
||||||
|
|
||||||
做过[二叉树:公共祖先问题](https://programmercarl.com/0236.二叉树的最近公共祖先.html)题目的同学应该知道,利用回溯从底向上搜索,遇到一个节点的左子树里有p,右子树里有q,那么当前节点就是最近公共祖先。
|
做过[二叉树:公共祖先问题](https://programmercarl.com/0236.二叉树的最近公共祖先.html)题目的同学应该知道,利用回溯从底向上搜索,遇到一个节点的左子树里有p,右子树里有q,那么当前节点就是最近公共祖先。
|
||||||
|
|
||||||
@ -71,7 +71,7 @@
|
|||||||
|
|
||||||
可以看出直接按照指定的方向,就可以找到节点8,为最近公共祖先,而且不需要遍历整棵树,找到结果直接返回!
|
可以看出直接按照指定的方向,就可以找到节点8,为最近公共祖先,而且不需要遍历整棵树,找到结果直接返回!
|
||||||
|
|
||||||
## 递归法
|
### 递归法
|
||||||
|
|
||||||
递归三部曲如下:
|
递归三部曲如下:
|
||||||
|
|
||||||
@ -203,7 +203,7 @@ public:
|
|||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
## 迭代法
|
### 迭代法
|
||||||
|
|
||||||
对于二叉搜索树的迭代法,大家应该在[二叉树:二叉搜索树登场!](https://programmercarl.com/0700.二叉搜索树中的搜索.html)就了解了。
|
对于二叉搜索树的迭代法,大家应该在[二叉树:二叉搜索树登场!](https://programmercarl.com/0700.二叉搜索树中的搜索.html)就了解了。
|
||||||
|
|
||||||
@ -229,7 +229,7 @@ public:
|
|||||||
|
|
||||||
灵魂拷问:是不是又被简单的迭代法感动到痛哭流涕?
|
灵魂拷问:是不是又被简单的迭代法感动到痛哭流涕?
|
||||||
|
|
||||||
# 总结
|
## 总结
|
||||||
|
|
||||||
对于二叉搜索树的最近祖先问题,其实要比[普通二叉树公共祖先问题](https://programmercarl.com/0236.二叉树的最近公共祖先.html)简单的多。
|
对于二叉搜索树的最近祖先问题,其实要比[普通二叉树公共祖先问题](https://programmercarl.com/0236.二叉树的最近公共祖先.html)简单的多。
|
||||||
|
|
||||||
@ -238,10 +238,10 @@ public:
|
|||||||
最后给出了对应的迭代法,二叉搜索树的迭代法甚至比递归更容易理解,也是因为其有序性(自带方向性),按照目标区间找就行了。
|
最后给出了对应的迭代法,二叉搜索树的迭代法甚至比递归更容易理解,也是因为其有序性(自带方向性),按照目标区间找就行了。
|
||||||
|
|
||||||
|
|
||||||
# 其他语言版本
|
## 其他语言版本
|
||||||
|
|
||||||
|
|
||||||
## Java
|
### Java
|
||||||
|
|
||||||
递归法:
|
递归法:
|
||||||
```java
|
```java
|
||||||
@ -273,7 +273,7 @@ class Solution {
|
|||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
## Python
|
### Python
|
||||||
|
|
||||||
递归法(版本一)
|
递归法(版本一)
|
||||||
```python
|
```python
|
||||||
@ -326,7 +326,7 @@ class Solution:
|
|||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
## Go
|
### Go
|
||||||
|
|
||||||
递归法:
|
递归法:
|
||||||
```go
|
```go
|
||||||
@ -350,7 +350,7 @@ func lowestCommonAncestor(root, p, q *TreeNode) *TreeNode {
|
|||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
## JavaScript
|
### JavaScript
|
||||||
|
|
||||||
递归法:
|
递归法:
|
||||||
```javascript
|
```javascript
|
||||||
@ -391,7 +391,7 @@ var lowestCommonAncestor = function(root, p, q) {
|
|||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
## TypeScript
|
### TypeScript
|
||||||
|
|
||||||
> 递归法:
|
> 递归法:
|
||||||
|
|
||||||
@ -422,7 +422,7 @@ function lowestCommonAncestor(root: TreeNode | null, p: TreeNode | null, q: Tree
|
|||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
## Scala
|
### Scala
|
||||||
|
|
||||||
递归:
|
递归:
|
||||||
|
|
||||||
@ -453,7 +453,7 @@ object Solution {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
## rust
|
### Rust
|
||||||
|
|
||||||
递归:
|
递归:
|
||||||
|
|
||||||
@ -519,3 +519,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>
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user