mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2026-02-02 18:39:09 +08:00
20210824
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
<p align="center"><strong>欢迎大家<a href="https://mp.weixin.qq.com/s/tqCxrMEU-ajQumL1i8im9A">参与本项目</a>,贡献其他语言版本的代码,拥抱开源,让更多学习算法的小伙伴们收益!</strong></p>
|
||||
|
||||
|
||||
## 700.二叉搜索树中的搜索
|
||||
# 700.二叉搜索树中的搜索
|
||||
|
||||
题目地址:https://leetcode-cn.com/problems/search-in-a-binary-search-tree/
|
||||
|
||||
@@ -19,11 +19,12 @@
|
||||
|
||||
在上述示例中,如果要找的值是 5,但因为没有节点值为 5,我们应该返回 NULL。
|
||||
|
||||
## 思路
|
||||
# 思路
|
||||
|
||||
之前我们讲了都是普通二叉树,那么接下来看看二叉搜索树。
|
||||
|
||||
在[关于二叉树,你该了解这些!](https://mp.weixin.qq.com/s/_ymfWYvTNd2GvWvC5HOE4A)中,我们已经讲过了二叉搜索树。
|
||||
|
||||
在[关于二叉树,你该了解这些!](https://mp.weixin.qq.com/s/q_eKfL8vmSbSFcptZ3aeRA)中,我们已经讲过了二叉搜索树。
|
||||
|
||||
二叉搜索树是一个有序树:
|
||||
|
||||
@@ -73,7 +74,7 @@ return NULL;
|
||||
|
||||
这里可能会疑惑,在递归遍历的时候,什么时候直接return 递归函数的返回值,什么时候不用加这个 return呢。
|
||||
|
||||
我们在[二叉树:递归函数究竟什么时候需要返回值,什么时候不要返回值?](https://mp.weixin.qq.com/s/6TWAVjxQ34kVqROWgcRFOg)中讲了,如果要搜索一条边,递归函数就要加返回值,这里也是一样的道理。
|
||||
我们在[二叉树:路径总和](https://mp.weixin.qq.com/s/EJr_nZ31TnvZmptBjkDGqA)中讲了,如果要搜索一条边,递归函数就要加返回值,这里也是一样的道理。
|
||||
|
||||
**因为搜索到目标节点了,就要立即return了,这样才是找到节点就返回(搜索某一条边),如果不加return,就是遍历整棵树了。**
|
||||
|
||||
@@ -125,7 +126,7 @@ public:
|
||||
|
||||
第一次看到了如此简单的迭代法,是不是感动的痛哭流涕,哭一会~
|
||||
|
||||
## 总结
|
||||
# 总结
|
||||
|
||||
本篇我们介绍了二叉搜索树的遍历方式,因为二叉搜索树的有序性,遍历的时候要比普通二叉树简单很多。
|
||||
|
||||
@@ -138,9 +139,9 @@ public:
|
||||
|
||||
|
||||
|
||||
## 其他语言版本
|
||||
# 其他语言版本
|
||||
|
||||
Java:
|
||||
## Java
|
||||
|
||||
```Java
|
||||
class Solution {
|
||||
@@ -207,17 +208,11 @@ class Solution {
|
||||
}
|
||||
```
|
||||
|
||||
Python:
|
||||
## Python
|
||||
|
||||
递归法:
|
||||
|
||||
```python
|
||||
# Definition for a binary tree node.
|
||||
# class TreeNode:
|
||||
# def __init__(self, val=0, left=None, right=None):
|
||||
# self.val = val
|
||||
# self.left = left
|
||||
# self.right = right
|
||||
class Solution:
|
||||
def searchBST(self, root: TreeNode, val: int) -> TreeNode:
|
||||
# 为什么要有返回值:
|
||||
@@ -248,19 +243,11 @@ class Solution:
|
||||
```
|
||||
|
||||
|
||||
Go:
|
||||
## Go
|
||||
|
||||
> 递归法
|
||||
递归法:
|
||||
|
||||
```go
|
||||
/**
|
||||
* Definition for a binary tree node.
|
||||
* type TreeNode struct {
|
||||
* Val int
|
||||
* Left *TreeNode
|
||||
* Right *TreeNode
|
||||
* }
|
||||
*/
|
||||
//递归法
|
||||
func searchBST(root *TreeNode, val int) *TreeNode {
|
||||
if root==nil||root.Val==val{
|
||||
@@ -273,17 +260,9 @@ func searchBST(root *TreeNode, val int) *TreeNode {
|
||||
}
|
||||
```
|
||||
|
||||
> 迭代法
|
||||
迭代法:
|
||||
|
||||
```go
|
||||
/**
|
||||
* Definition for a binary tree node.
|
||||
* type TreeNode struct {
|
||||
* Val int
|
||||
* Left *TreeNode
|
||||
* Right *TreeNode
|
||||
* }
|
||||
*/
|
||||
//迭代法
|
||||
func searchBST(root *TreeNode, val int) *TreeNode {
|
||||
for root!=nil{
|
||||
@@ -299,9 +278,9 @@ func searchBST(root *TreeNode, val int) *TreeNode {
|
||||
}
|
||||
```
|
||||
|
||||
JavaScript版本
|
||||
## JavaScript
|
||||
|
||||
> 递归
|
||||
递归:
|
||||
|
||||
```javascript
|
||||
/**
|
||||
@@ -329,7 +308,7 @@ var searchBST = function (root, val) {
|
||||
};
|
||||
```
|
||||
|
||||
> 迭代
|
||||
迭代:
|
||||
|
||||
```javascript
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user