mirror of
https://github.com/halfrost/LeetCode-Go.git
synced 2025-07-06 09:23:19 +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