leetcode270. 最接近的二叉搜索树值

给定一个不为空的二叉搜索树和一个目标值 target,请在该二叉搜索树中找到最接近目标值 target 的数值。

注意:

给定的目标值 target 是一个浮点数
题目保证在该二叉搜索树中只会存在一个最接近目标值的数
示例:

输入: root = [4,2,5,1,3],目标值 target = 3.714286

    4
   / \
  2   5
 / \
1   3

输出: 4

思路:二分,当前节点比target大就往左边搜(因为右边的差距更大),当前节点比target小就往右搜(因为左边的差距更大)。

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode(int x) { val = x; }* }*/
class Solution {public int closestValue(TreeNode root, double target) {int val, closest = root.val;while (root != null) {val = root.val;closest = Math.abs(val - target) < Math.abs(closest - target) ? val : closest;root =  target < root.val ? root.left : root.right;}return closest;}
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/444375.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++(STL):21---deque之源码剖析

一、deque概述 deque的使用语法:总的来说:是一个双端队列特点:支持快速随机访问(支持索引取值)在头尾插入/删除速度很快deque是非常复杂的数据结构,由多个vector组成,迭代器使用时会在不同的区间跳转存取元素的时候,deque的内部结构会多出一个间接过程,相比vector操作…

C++(STL):19---deque之删除和emplace用法

deque 容器中,无论是添加元素还是删除元素,都只能借助 deque 模板类提供的成员函数。表 1 中罗列的是所有和添加或删除容器内元素相关的 deque 模板类中的成员函数。 表 1 和添加或删除deque容器中元素相关的成员函数 成员函数功能push_back()在容器现有元素的尾部添加一个元…

Struts2.x中获取request,response,session的方式

Struts2.x中获取request&#xff0c;response&#xff0c;session的方式有两种&#xff1a;非IOC方式和IOC方式&#xff1a; 一&#xff1a;非IOC方式&#xff1a; 要获得request&#xff0c;response&#xff0c;session 这些对象&#xff0c;关键是Struts2.x中的com.opensy…

leetcode208. 实现 Trie (前缀树)

实现一个 Trie (前缀树)&#xff0c;包含 insert, search, 和 startsWith 这三个操作。 示例: Trie trie new Trie(); trie.insert("apple"); trie.search("apple"); // 返回 true trie.search("app"); // 返回 false trie.startsWith…

C++(STL):20---deque容器访问元素

和 array、vector 容器一样,deque可以采用普通数组访问存储元素的方式,访问 deque 容器中的元素,比如: #include <iostream>#include <deque>using namespace std;int main(){deque<int>d{ 1,2,3,4 };cout << d[1] << endl;//修改指定下标位…

C++(STL):17---deque之迭代器使用

deque 容器迭代器的类型为随机访问迭代器,deque 模板类提供了表 1 所示这些成员函数,通过调用这些函数,可以获得表示不同含义的随机访问迭代器。 表 1 deque 支持迭代器的成员函数 成员函数功能begin()返回指向容器中第一个元素的正向迭代器;如果是 const 类型容器,在该函…

C++(STL):16---deque之常规用法

deque 是 double-ended queue 的缩写,又称双端队列容器。前面章节中,我们已经系统学习了 vector 容器,值得一提的是,deque 容器和 vecotr 容器有很多相似之处,比如: deque 容器也擅长在序列尾部添加或删除元素(时间复杂度为O(1)),而不擅长在序列中间添加或删除元素。d…

C++(STL):22 ---序列式容器queue使用

queue是队列,特点是先进先出,后进后出,你可以理解为数据结构里的队列模型,他只允许你访问 queue<T> 容器适配器的第一个和最后一个元素。只能在容器的末尾添加新元素,只能从头部移除元素。许多程序都使用了 queue 容器。queue 容器可以用来表示超市的结账队列或服务…

C++(STL):23 ---序列式容器queue源码剖析

一、queue概述 queue是一种先进先出(First In First Out,FIFO)的数据结构。它有两个出口,形式如下图所示特点:queue允许新增元素、移除元素、从最底端加入元素、取得最顶端元素但除了最底端可以加入、最顶端可以取出外,没有任何其他方法可以存取queue的其他元素。换言之q…

leetcode374. 猜数字大小

我们正在玩一个猜数字游戏。 游戏规则如下&#xff1a; 我从 1 到 n 选择一个数字。 你需要猜我选择了哪个数字。 每次你猜错了&#xff0c;我会告诉你这个数字是大了还是小了。 你调用一个预先定义好的接口 guess(int num)&#xff0c;它会返回 3 个可能的结果&#xff08;-1&…

C++(STL):24 ---序列式容器stack用法

1.stack的定义 要使用stack,应先添加头文件#include <stack>, 并在头文件下面加上 "using namespace std" //定义 stack< typename > name;2. stack容器内元素的访问 由于栈(stack)本书就是一种后进先出的数据结构,在STL的stack中只能 通过top()来访问…

C++(STL):25 ---序列式容器stack源码剖析

一、stack概述 stack是一种先进后出(First In Last Out,FILO)的数据结构。它只有一个出口, 形式如下图所示特点:stack允许新增元素、移除元素、取得最顶端元素。但除了最顶端外,没有任何其他方法可以存取stack的其他元素。换言之stack不允许有遍历行为将元素推入stack的动…

php-protobuf扩展和代码生成工具使用

https://github.com/protocolbuffers/protobuf/releases/tag/v3.5.1 下载选择 https://github.com/protocolbuffers/protobuf/releases/download/v3.5.1/protobuf-php-3.5.1.zip yum install autoconf automake libtool tar -zxvf protobuf-php-3.5.1.tar.gz cd protobuf-3.…

geoip环境配置

1.下载geoip的php扩展库 wget http://pecl.php.net/get/geoip-1.1.1.tgz tar zxvf geoip-1.1.1.tgz cd geoip-1.1.1 phpize ./configure --with-php-config=/usr/bin/php-config --with-geoip make &make install 2.配置php支持geoip扩展 [root]# ll /usr/lib64/php/modul…

leetcode259. 较小的三数之和

给定一个长度为 n 的整数数组和一个目标值 target&#xff0c;寻找能够使条件 nums[i] nums[j] nums[k] < target 成立的三元组 i, j, k 个数&#xff08;0 < i < j < k < n&#xff09;。 示例&#xff1a; 输入: nums [-2,0,1,3], target 2 输出: 2 解…

Struts2和Spring和Hibernate应用实例

Struts2、Spring和Hibernate应用实例Struts作为MVC 2的Web框架&#xff0c;自推出以来不断受到开发者的追捧&#xff0c;得到广泛的应用。作为最成功的Web框架&#xff0c;Struts自然拥有众多的优点&#xff1a;MVC 2模型的使用、功能齐全的标志库&#xff08;Tag Library&…

C++(STL):31 ---关联式容器map源码剖析

map的特性 所有元素都会根据元素的键值自动被排序map中的pair结构 map的所有元素类型都是pair,同时拥有实值(value)和键值(key)pair的第一个元素视为键值,第二个元素视为实值map不允许两个元素拥有相同的键值下面是stl_pair.h中pair的定义://代码摘录与stl_pair.htempla…

leetcode360. 有序转化数组

给你一个已经 排好序 的整数数组 nums 和整数 a、b、c。对于数组中的每一个数 x&#xff0c;计算函数值 f(x) ax2 bx c&#xff0c;请将函数值产生的数组返回。 要注意&#xff0c;返回的这个数组必须按照 升序排列&#xff0c;并且我们所期望的解法时间复杂度为 O(n)。 示…

C++(STL):27 ---关联式容器set源码剖析

一、set set语法使用参阅:set的特性 set所有元素都会根据元素的键值自动被排序set中的键值就是实值,实值就是键值默认情况下set不允许两个元素重复set的迭代器 不能根据set的迭代器改变set元素的值。因为其键值就是实值,实值就是键值,如果改变set元素值,会严重破坏set组织…

C++(STL):28 ---关联式容器map用法

作为关联式容器的一种,map 容器存储的都是 pair 对象,也就是用 pair 类模板创建的键值对。其中,各个键值对的键和值可以是任意数据类型,包括 C++ 基本数据类型(int、double 等)、使用结构体或类自定义的类型。 通常情况下,map 容器中存储的各个键值对都选用 string 字符…