zoukankan      html  css  js  c++  java
  • Leetcode 653. 两数之和 IV

    题目链接

    https://leetcode.com/problems/two-sum-iv-input-is-a-bst/description/

    题目描述

    给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true。

    案例 1:

    输入: 
        5
       / 
      3   6
     /    
    2   4   7
    
    Target = 9
    
    输出: True
    

    案例 2:

    输入: 
        5
       / 
      3   6
     /    
    2   4   7
    
    Target = 28
    
    输出: False
    

    题解

    采用递归的方式遍历所有的节点,可以先求出二叉搜索树的中序遍历,然后依次遍历该中序遍历,即可求解。

    代码

    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    class Solution {
        public boolean findTarget(TreeNode root, int k) {
            return find(root, k, root);
        }
        
        public boolean find(TreeNode root, int k, TreeNode curr) {
            if (curr == null) {
                return false;
            }
            
            return find(root, k, curr.left) || find(root, k, curr.val) || find(root, k, curr.right);
        }
        
        public boolean find(TreeNode root, int k, int currVal) {
            if (root == null) { return false; }
            int target = k - currVal;
            if (target == currVal) { return false; }
            if (root.val == target) { return true; }
            else if (root.val > target) return find(root.left, k, currVal);
            else return find(root.right, k, currVal);
        }
    }
    
    
  • 相关阅读:
    CRB and His Birthday(2015多校)
    B. Bear and Three Musketeers
    Uva657
    cas服务端改造
    有用的maven插件
    maven管理的非标准目录
    struts2中的action交由spring管理
    数据库分库
    linux内核系列之二_资源
    linux内核系列之一_工具
  • 原文地址:https://www.cnblogs.com/xiagnming/p/9755621.html
Copyright © 2011-2022 走看看