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);
        }
    }
    
    
  • 相关阅读:
    多姿多彩的线程
    字典操作
    字符串语法
    购物车
    列表常用语法
    整数划分问题
    计算N的阶层
    判断是否是素数
    快速排序
    冒泡排序
  • 原文地址:https://www.cnblogs.com/xiagnming/p/9755621.html
Copyright © 2011-2022 走看看