700_二叉搜索树中的搜索

简介: 700_二叉搜索树中的搜索

700_二叉搜索树中的搜索

 

package 二叉树.二叉搜索树;
/**
 * https://leetcode-cn.com/problems/search-in-a-binary-search-tree/
 * @author Huangyujun
 *
 *从自己的代码书写得到一个提示:有返回值的递归函数,需要用变量接收返回值 【对应的变量】
 */
public class _700_二叉搜索树中的搜索 {
    //递归实现:① 若是值 = 根值,直接返回根结点;② 若是值 > 根值,只能到右子树中找,否则只能在左子树中找。
    class Solution {
          public TreeNode searchBST(TreeNode root, int val) {
            if (root == null || val == root.val) return root;
            return val < root.val ? searchBST(root.left, val) : searchBST(root.right, val);
          }
        }
//接下来的代码实现思路与官网一致,就是写得有点啰嗦了
    //多看看官网的代码思路:
    //尤其是最后一句:结果要么是在A要么是在B,就return(条件偏向A)? A :B; 
//    public TreeNode searchBST(TreeNode root, int val) {
//        //找到返回即可
//        if(root == null || val == root.val)    return root;
//        if(root.val > val) {
//            //当前值小于,在右子树找
//            root =  searchBST(root.left,val); 
//        }else if(root.val < val) {
//            //大了,左子树找
//            root = searchBST(root.right,val); 
//        }
//        
//        return root;
//    }
    //迭代实现:当一直不是 根值时,判断若 值小于根值,则只能在左区域找,否则只能在右区域找
    class Solution2 {
          public TreeNode searchBST(TreeNode root, int val) {
            while (root != null && val != root.val)
              root = val < root.val ? root.left : root.right;
            return root;
          }
        }
}
目录
相关文章
|
2月前
|
Java C++ Python
leetcode-700:二叉搜索树中的搜索
leetcode-700:二叉搜索树中的搜索
407 0
|
2月前
深度优化搜索,字典树
深度优化搜索,字典树
31 0
|
12月前
回溯与搜索 四 跳马问题
回溯与搜索 四 跳马问题
|
11月前
|
存储 编译器 C语言
二叉树搜索
在之前的我们已经学过了普通二叉树,了解了基本的二叉树的结构和基本操作了,不过我们之前的二叉树结构都是使用C语言实现的,我们这次来介绍二叉树中更加复杂的树结构,C语言在实现这些结构已经有些吃力了,更适合我们使用C++来实现。
|
存储 索引
二分查找问题(关键:确定搜索区间)
二分查找问题(关键:确定搜索区间)
|
算法
LeetCode 第 1373 题:二叉搜索子树的最大键值和
在判断是否为 BST 的时候,可以使用后序遍历来记录 root 的左右子树是否为 BST 并且返回 root 树的最大和最小值,以及 root 的键值和。
74 0
二叉树——700.二叉搜索树中的搜索
本专栏按照数组—链表—哈希—字符串—栈与队列—二叉树—回溯—贪心—动态规划—单调栈的顺序刷题,采用代码随想录所给的刷题顺序,一个正确的刷题顺序对算法学习是非常重要的,希望对大家有帮助
二叉树——700.二叉搜索树中的搜索
|
算法 索引
基础算法:二分查找 搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
203 0

热门文章

最新文章

  • 1
    流量控制系统,用正则表达式提取汉字
    25
  • 2
    Redis09-----List类型,有序,元素可以重复,插入和删除快,查询速度一般,一般保存一些有顺序的数据,如朋友圈点赞列表,评论列表等,LPUSH user 1 2 3可以一个一个推
    26
  • 3
    Redis08命令-Hash类型,也叫散列,其中value是一个无序字典,类似于java的HashMap结构,Hash结构可以将对象中的每个字段独立存储,可以针对每字段做CRUD
    26
  • 4
    Redis07命令-String类型字符串,不管是哪种格式,底层都是字节数组形式存储的,最大空间不超过512m,SET添加,MSET批量添加,INCRBY age 2可以,MSET,INCRSETEX
    27
  • 5
    S外部函数可以访问函数内部的变量的闭包-闭包最简单的用不了,闭包是内层函数+外层函数的变量,简称为函数套函数,外部函数可以访问函数内部的变量,存在函数套函数
    24
  • 6
    Redis06-Redis常用的命令,模糊的搜索查询往往会对服务器产生很大的压力,MSET k1 v1 k2 v2 k3 v3 添加,DEL是删除的意思,EXISTS age 可以用来查询是否有存在1
    31
  • 7
    Redis05数据结构介绍,数据结构介绍,官方网站中看到
    22
  • 8
    JS字符串数据类型转换,字符串如何转成变量,+号只要有一个是字符串,就会把另外一个转成字符串,- * / 都会把数据转成数字类型,数字型控制台是蓝色,字符型控制台是黑色,
    20
  • 9
    JS数组操作---删除,arr.pop()方法从数组中删除最后一个元素,并返回该元素的值,arr.shift() 删除第一个值,arr.splice()方法,删除指定元素,arr.splice,从第一
    20
  • 10
    定义好变量,${age}模版字符串,对象可以放null,检验数据类型console.log(typeof str)
    19