博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
力扣题解-700. 二叉搜索树中的搜索(分治法思想,递归的方式求解)
阅读量:4299 次
发布时间:2019-05-27

本文共 1142 字,大约阅读时间需要 3 分钟。

题目:700. 二叉搜索树中的搜索

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

例如,

给定二叉搜索树:

4   / \  2   7 / \1   3

和值: 2

你应该返回如下子树:

2      / \   1   3

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

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/search-in-a-binary-search-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题解

利用分治法思想递归方法解决。

  1. divide

    将原始二叉搜索树分为根节点,左子树和右子树。

  2. conquer

    原问题的解即为根节点是否为给定值,或分别递归地在左子树和右子树中查找。由于二查搜索树的性质,可以根据给定值与当前根节点值的大小,简化搜索空间,只需在其中一个子树中查找。

当当前根节点值大于给定值时,只需在左子树中查找;当当前根节点值小于给定值时,只需在右子树中查找。

  1. combine
    找到返回对应节点,否则返回null。

代码

/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {
public: TreeNode* searchBST(TreeNode* root, int val) {
if (!root) {
return NULL; } if (root->val == val) {
return root; } else if (root->val > val) {
return searchBST(root->left, val); } else if (root->val < val) {
return searchBST(root->right, val); } return NULL; }};
你可能感兴趣的文章
JavaWeb学习-动态代理-1-方法newProxyInstance介绍
查看>>
JavaWeb学习-动态代理-2-invoke()方法和动态代理Waiter类练习
查看>>
RestAssured接口自动化从入门到框架搭建-20-框架组装-Maven项目环境搭建和BaseTest类和日志模块
查看>>
RestAssured接口自动化从入门到框架搭建-21-框架组装-TestBase类功能扩充和工具类TestUtils
查看>>
C++面向对象-1-类和对象以及封装
查看>>
GTest基础学习-04-第3个单元测试-测试夹具test fixture
查看>>
GTest基础学习-05-第5个单元测试-父test fixture和子test fixture的使用
查看>>
GTest基础学习-06-第6个单元测试-接口测试(类型参数驱动)
查看>>
从零开始到设计Python+Selenium自动化测试框架-如何开始
查看>>
Python+Selenium基础篇之2-打开和关闭火狐浏览器
查看>>
Python+Selenium基础篇之3-打开和关闭IE/Chrome浏览器
查看>>
Python+Selenium基础篇之4-XPath的使用
查看>>
Python+Selenium基础篇之5-第一个完整的自动化测试脚本
查看>>
Python+Selenium练习篇之8-利用css定位元素
查看>>
Python+Selenium练习篇之19-断言页面标题
查看>>
Python+Selenium练习篇之20-获取元素上面的文字
查看>>
Python+Selenium练习篇之21-验证控件是否被选中
查看>>
Python+Selenium练习篇之22-获取页面元素大小
查看>>
Python+Selenium练习篇之23-组合键-全选文字
查看>>
Python+Selenium练习篇之24-组合键-退格键删除文字
查看>>