>653. 两数之和 IV - 输入 BST<
>findTarget<

一、解题思路
1、解法一( Java )
解法思路:深度优先搜索 + 递归调用(二叉树常用)+ 哈希表
使用 递归 深度优先搜索的方式遍历整棵树,用哈希表( Set 集合)记录遍历过的节点的值。如果在遍历某个节点 x 时发现集合中存在 k - x.val,说明存在两个节点之和等于 k,则返回 True;否则我们将 x 放入到哈希表中。若搜索完整棵树都没有则返回 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 {
Set<Integer> set = new HashSet<Integer>();
public boolean findTarget(TreeNode root, int k) {
if (root == null) {
return false;
}
if (set.contains(k - root.val)) {
return true;
}
set.add(root.val);
return findTarget(root.left, k) || findTarget(root.right, k);
}
}
运行结果截图如下:

本文解析了如何使用深度优先搜索和递归在二叉搜索树中寻找两个节点值之和等于目标值k的解法,通过Java实现并利用哈希表优化查找效率。展示了核心代码和运行结果截图,适合理解二叉树遍历和哈希表在算法中的应用。
133

被折叠的 条评论
为什么被折叠?



