LeetCode题653. 两数之和 IV - 输入 BST

it2025-02-12  8

题目描述: 给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true。 例子: 输入: 5 / \ 3 6 / \ \ 2 4 7 Target = 9 输出: True 思路: 实际上是遍历二叉搜索树,寻找两个节点的值相加等于目标值。 可以遍历二叉树将结果存入list集合中,再对list集合进行遍历,判断两数之和是否有等于目标值的情况。 可以利用HashSet对树中的元素进行筛选(HashSet中不能有重复的元素)。 优化:寻找两数之和,可以看做是已知一个数,然后在树中寻找是否存在目标值与已知数的差值。 /** * 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) { Set<Integer> set = new HashSet<Integer>() ; return preOrder(root,set,k); } public boolean preOrder(TreeNode root,Set<Integer> set,int k){ if(root == null){ return false; } if(set.contains(k - root.val)){ return true ; } set.add(root.val); return preOrder(root.left,set,k) || preOrder(root.right,set,k) ; } }
最新回复(0)