二叉搜索树中的搜索|Go主题月

524 阅读2分钟

【Golang主题学习月】 刷题比玩游戏好多了,成就感越来越强,每天坚持刷一道题,每天锻炼30分钟,等8块腹肌,等大厂offer.

😄

 \color{red}{~}

我相信,如果在面试中遇到此题,逻辑清晰、正确表达出来、手撕

应该会超过一部分的面试者。

对树不熟悉的朋友,可以看看前面的基础训练题哦!

leecode 700. 二叉搜索树中的搜索

给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。

例如,

图片.png

你应该返回如下子树:

  2
1  3

在上述示例中,如果要找的值是 5,但因为没有节点值为 5,我们应该返回 NULL。


参考代码

定义一颗树

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int          // 根
 *     Left *TreeNode   //左节点
 *     Right *TreeNode  //右节点
 * }
 */

GO语言版 递归

  1. 要知道这是一棵树,只是通过数组的形式表现出来的

// 迭代: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块腹肌的我来说真的 非常有用!!!

如果本篇博客有任何错误,请批评指教,不胜感激 !❤️❤️❤️❤️