美文网首页数据结构与算法
Leetcode 653 两数之和 IV - 输入 BST

Leetcode 653 两数之和 IV - 输入 BST

作者: itbird01 | 来源:发表于2021-12-21 07:25 被阅读0次

    653. 两数之和 IV - 输入 BST

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

    解题思路

    解法1:
    1.递归遍历二叉树,将所有的值,保存在map中,key为节点的值,value为出现的次数
    2.遍历map,如果map中包含target-current.val,则返回true
    3.切记,上一条件,还需加一层判断,如果target-current.val == current.val,那么说明current.val必须出现两次以上,才可以返回true

    解题遇到的问题

    后续需要总结学习的知识点

    需要深入总结学习二叉搜索树的数据结构的特点、应用、搜索、插入、删除

    ##解法1
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map.Entry;
    
    class Solution {
        HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
    
        public boolean findTarget(TreeNode root, int k) {
            preTree(root);
            Iterator<Entry<Integer, Integer>> iterator = map.entrySet().iterator();
            boolean ans = false;
            while (iterator.hasNext()) {
                Entry<Integer, Integer> entry = iterator.next();
                if (map.containsKey(k - entry.getKey())) {
                    if (k - entry.getKey() == entry.getKey()) {
                        ans = (entry.getValue() == 2);
                    } else {
                        ans = true;
                    }
                    if (ans) {
                        break;
                    }
                }
            }
    
            return ans;
        }
    
        private void preTree(TreeNode root) {
            if (root == null) {
                return;
            }
            map.put(root.val, map.getOrDefault(root.val, 0) + 1);
            preTree(root.left);
            preTree(root.right);
        }
    
        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;
            }
        }
    }
    

    相关文章

      网友评论

        本文标题:Leetcode 653 两数之和 IV - 输入 BST

        本文链接:https://www.haomeiwen.com/subject/cxzafrtx.html