【Golang主题学习月】 刷题比玩游戏好多了,成就感越来越强,每天坚持刷一道题,每天锻炼30分钟,等8块腹肌,等大厂offer.
😄
我相信,如果在面试中遇到此题,逻辑清晰、正确表达出来、手撕
应该会超过一部分的面试者。
对树不熟悉的朋友,可以看看前面的基础训练题哦!
leecode 700. 二叉搜索树中的搜索
给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。
例如,
你应该返回如下子树:
2
1 3
在上述示例中,如果要找的值是 5,但因为没有节点值为 5,我们应该返回 NULL。
参考代码
定义一颗树
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int // 根
* Left *TreeNode //左节点
* Right *TreeNode //右节点
* }
*/
GO语言版 递归
-
要知道这是一棵树,只是通过数组的形式表现出来的
// 迭代:for循环
func searchBST(root *TreeNode, val int) *TreeNode {
for root != nil && root.Val != val {
if root.Val > val {
// 根节点值大于目标值,所以选择左子树
root = root.Left
} else {
// 根节点值小于等于目标值,所以选择又子树
root = root.Right
}
}
return root
}
// 递归
func searchBST(root *TreeNode, val int) *TreeNode {
if root == nil || root.Val == val {
return root
}
if root.Val > val {
return searchBST(root.Left, val)
} else {
return searchBST(root.Right, val)
}
}
真心感谢帅逼靓女们能看到这里,如果这个文章写得还不错,觉得有点东西的话
求点赞👍 求关注❤️ 求分享👥 对8块腹肌的我来说真的 非常有用!!!
如果本篇博客有任何错误,请批评指教,不胜感激 !❤️❤️❤️❤️