LeetCode 653. Two Sum IV - Input is a BST

Given a Binary Search Tree and a target number, return true if there exist two elements in the BST such that their sum is equal to the given target.

Example 1:

Input: 
    5
   / \
  3   6
 / \   \
2   4   7

Target = 9

Output: True

 

Example 2:

Input: 
    5
   / \
  3   6
 / \   \
2   4   7

Target = 28

Output: False

题意:给定一棵二叉查找树和一个目标值target,判断BST中是否存在两个元素使其相加和为target
思路:用深度优先搜索,将二叉树中的所有节点值放入ArrayList,然后判断是否存在相加为target的两个元素,实现如下:
复制代码
public boolean findTarget(TreeNode root, int k) {
        List<Integer> nodes = new ArrayList<>();
        dfs(root, nodes);
        for(int i = 0; i < nodes.size(); i++){
            int val = nodes.get(i);
            if(nodes.contains(k - val) && k - val != val)
                return true;
        }
        return false;
    }
    public void dfs(TreeNode root, List<Integer> nodes){
        if(root != null){
            nodes.add(root.val);
            dfs(root.left, nodes);
            dfs(root.right, nodes);
        }
    }
复制代码

 

 
posted @   zeroingToOne  阅读(115)  评论(0编辑  收藏  举报
编辑推荐:
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
阅读排行:
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单
· C# 13 中的新增功能实操
· Supergateway:MCP服务器的远程调试与集成工具
· Vue3封装支持Base64导出的电子签名组件
点击右上角即可分享
微信分享提示