本文主要是介绍LCR 056.两数之和 IV,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目来源:
leetcode题目,网址:LCR 056. 两数之和 IV - 输入二叉搜索树 - 力扣(LeetCode)
解题思路:
广度优先遍历二叉树的同时将已遍历过的节点值加入哈希表,若目标值与当前节点值之差存在哈希表中,返回 true;否则返回false。
解题代码:
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val = val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val = val;* this.left = left;* this.right = right;* }* }*/
class Solution {public boolean findTarget(TreeNode root, int k) {HashSet<Integer> set=new HashSet<>();Queue<TreeNode> queue=new LinkedList<>();queue.offer(root);while(!queue.isEmpty()){int size=queue.size();for(int i=0;i<size;i++){TreeNode temp=queue.poll();if(set.contains(k-temp.val)){return true;}else{set.add(temp.val);if(temp.left!=null){queue.offer(temp.left);}if(temp.right!=null){queue.offer(temp.right);}}}}return false;}}
总结:
官方题解给出了四种解法。第一种是深度优先+哈希表。第二种是广度优先+哈希表。第三种是先中序遍历得到升序数组,再在数组中寻找。第四种直接在树上用双指针进行查找。
这篇关于LCR 056.两数之和 IV的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!