LeetCode Easy653中两数之和输入为BST的示例分析
发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,LeetCode Easy653中两数之和输入为BST的示例分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Description
千家信息网最后更新 2024年11月11日LeetCode Easy653中两数之和输入为BST的示例分析
LeetCode Easy653中两数之和输入为BST的示例分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
Description
https://leetcode.com/problems/two-sum-iv-input-is-a-bst/
Given the root of a Binary Search Tree and a target number k, return true if there exist two elements in the BST such that their sum is equal to the given target.
Example 1:
Input: root = [5,3,6,2,4,null,7], k = 9Output: true
Example 2:
Input: root = [5,3,6,2,4,null,7], k = 28Output: false
Example 3:
Input: root = [2,1,3], k = 4Output: true
Example 4:
Input: root = [2,1,3], k = 1Output: false
Example 5:
Input: root = [2,1,3], k = 3 Output: true
Constraints:
The number of nodes in the tree is in the range $[1, 10^4]$.
$-10^4 <= Node.val <= 10^4$
root
is guaranteed to be a valid binary search tree.$-10^5 <= k <= 10^5$
Analysis
用两指针方法,一指针前序遍历,另一指针二分查找。
Submission
public class TwoSumIVInputIsABST { public boolean findTarget(TreeNode root, int k) { return traverse(root, root, k); } // 前序遍历 private boolean traverse(TreeNode node, TreeNode root, int k) { if (node == null) return false; // node.val恰好是k的一半时,根据BST特性,没必要找另一个节点 if (2 * node.val != k && findTarget2(root, k - node.val)) return true; return traverse(node.left, root, k) || traverse(node.right, root, k); } // 二分查找 private boolean findTarget2(TreeNode node, int targetValue) { if (node == null) return false; if (node.val == targetValue) return true; return findTarget2(targetValue < node.val ? node.left : node.right, targetValue); }}
Test
import static org.junit.Assert.*;import org.junit.Test;import com.lun.util.BinaryTree;import com.lun.util.BinaryTree.TreeNode;public class TwoSumIVInputIsABSTTest { @Test public void test() { TwoSumIVInputIsABST obj = new TwoSumIVInputIsABST(); TreeNode root1 = BinaryTree.integers2BinaryTree(5, 3, 6, 2, 4, null, 7); assertTrue(obj.findTarget(root1, 9)); assertFalse(obj.findTarget(root1, 28)); TreeNode root2 = BinaryTree.integers2BinaryTree(2, 1, 3); assertTrue(obj.findTarget(root2, 4)); assertFalse(obj.findTarget(root2, 1)); assertTrue(obj.findTarget(root2, 3)); }}
关于LeetCode Easy653中两数之和输入为BST的示例分析问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。
分析
指针
问题
之和
示例
输入
方法
更多
帮助
解答
易行
必要
简单易行
内容
小伙
小伙伴
特性
知识
篇文章
节点
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发总工程师
科智时代网络技术
清醒数据库
hdfs的服务器
数据库未启用或不可用
新乡市仓戒网络技术有限公司
qq号申请一直显示服务器繁忙
怎么买携程数据库
刚毕业学软件开发去哪里找工作
未来战日服登录显示服务器在维护
初中生网络安全教育讲座
苹果手机天气服务器崩溃
个软件开发模型适用的场景
中国电信网络安全处处长
奇迹后台在哪里清理数据库
网络安全体系结构有哪些
360集团网络安全协议书
三亚直播软件开发搭建
陕西电视台网络安全
宁波梦幻西游服务器
黄浦区创新数据库服务商前景
滁州机架式服务器哪家好
无线网络技术导论期末
山东计算机软件开发机构
apache配置数据库
服务器断电后连不上数据库
银翼计划软件开发
建立数据库中表
数据库用sql语句修改具体数据
普陀区管理软件开发包括什么