mirror of
https://github.com/halfrost/LeetCode-Go.git
synced 2025-07-05 16:36:41 +08:00
@ -0,0 +1,20 @@
|
||||
package leetcode
|
||||
|
||||
type TreeNode struct {
|
||||
Val int
|
||||
Left *TreeNode
|
||||
Right *TreeNode
|
||||
}
|
||||
|
||||
func searchBST(root *TreeNode, val int) *TreeNode {
|
||||
if root == nil {
|
||||
return nil
|
||||
}
|
||||
if root.Val == val {
|
||||
return root
|
||||
} else if root.Val < val {
|
||||
return searchBST(root.Right, val)
|
||||
} else {
|
||||
return searchBST(root.Left, val)
|
||||
}
|
||||
}
|
@ -0,0 +1,51 @@
|
||||
package leetcode
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
)
|
||||
|
||||
type question700 struct {
|
||||
para700
|
||||
ans700
|
||||
}
|
||||
|
||||
// para 是参数
|
||||
type para700 struct {
|
||||
root *TreeNode
|
||||
val int
|
||||
}
|
||||
|
||||
// ans 是答案
|
||||
type ans700 struct {
|
||||
ans *TreeNode
|
||||
}
|
||||
|
||||
func Test_Problem700(t *testing.T) {
|
||||
|
||||
qs := []question700{
|
||||
{
|
||||
para700{&TreeNode{Val: 4,
|
||||
Left: &TreeNode{Val: 2, Left: &TreeNode{Val: 1, Left: nil, Right: nil}, Right: &TreeNode{Val: 3, Left: nil, Right: nil}},
|
||||
Right: &TreeNode{Val: 7, Left: nil, Right: nil}},
|
||||
2},
|
||||
ans700{&TreeNode{Val: 2, Left: &TreeNode{Val: 1, Left: nil, Right: nil}, Right: &TreeNode{Val: 3, Left: nil, Right: nil}}},
|
||||
},
|
||||
|
||||
{
|
||||
para700{&TreeNode{Val: 4,
|
||||
Left: &TreeNode{Val: 2, Left: &TreeNode{Val: 1, Left: nil, Right: nil}, Right: &TreeNode{Val: 3, Left: nil, Right: nil}},
|
||||
Right: &TreeNode{Val: 7, Left: nil, Right: nil}},
|
||||
5},
|
||||
ans700{nil},
|
||||
},
|
||||
}
|
||||
|
||||
fmt.Printf("------------------------Leetcode Problem 700------------------------\n")
|
||||
|
||||
for _, q := range qs {
|
||||
_, p := q.ans700, q.para700
|
||||
fmt.Printf("【input】:%v 【output】:%v\n", p, searchBST(p.root, p.val))
|
||||
}
|
||||
fmt.Printf("\n\n\n")
|
||||
}
|
61
leetcode/0700.Search-in-a-Binary-Search-Tree/README.md
Normal file
61
leetcode/0700.Search-in-a-Binary-Search-Tree/README.md
Normal file
@ -0,0 +1,61 @@
|
||||
# [700. Search in a Binary Search Tree](https://leetcode-cn.com/problems/search-in-a-binary-search-tree/)
|
||||
|
||||
## 题目
|
||||
|
||||
You are given the root of a binary search tree (BST) and an integer val.
|
||||
|
||||
Find the node in the BST that the node's value equals val and return the subtree rooted with that node. If such a node does not exist, return null.
|
||||
|
||||
**Example 1**:
|
||||
|
||||

|
||||
|
||||
Input: root = [4,2,7,1,3], val = 2
|
||||
Output: [2,1,3]
|
||||
|
||||
**Example 2**:
|
||||
|
||||

|
||||
|
||||
Input: root = [4,2,7,1,3], val = 5
|
||||
Output: []
|
||||
|
||||
**Constraints:**
|
||||
|
||||
- The number of nodes in the tree is in the range [1, 5000].
|
||||
- 1 <= Node.val <= 10000000
|
||||
- root is a binary search tree.
|
||||
- 1 <= val <= 10000000
|
||||
|
||||
## 题目大意
|
||||
|
||||
给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。
|
||||
|
||||
## 解题思路
|
||||
|
||||
- 根据二叉搜索树的性质(根节点的值大于左子树所有节点的值,小于右子树所有节点的值),进行递归求解
|
||||
|
||||
## 代码
|
||||
|
||||
```go
|
||||
package leetcode
|
||||
|
||||
type TreeNode struct {
|
||||
Val int
|
||||
Left *TreeNode
|
||||
Right *TreeNode
|
||||
}
|
||||
|
||||
func searchBST(root *TreeNode, val int) *TreeNode {
|
||||
if root == nil {
|
||||
return nil
|
||||
}
|
||||
if root.Val == val {
|
||||
return root
|
||||
} else if root.Val < val {
|
||||
return searchBST(root.Right, val)
|
||||
} else {
|
||||
return searchBST(root.Left, val)
|
||||
}
|
||||
}
|
||||
```
|
Reference in New Issue
Block a user