leetcode 653. 两数之和 IV - 输入 BST

653. 两数之和 IV - 输入 BST

题目描述

leetcode 653. 两数之和 IV - 输入 BST_第1张图片

解题思路

有一个此类题的大体思路,首先需要知道每个结点的元素都是什么,其次再进行对应结点的查找。我们可以先通过递归的二叉树访问方法,获取每个结点的元素,在遍历每个结点,查找时候有符合条件的结点

代码实现

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    vector <int> v;


    bool findTarget(TreeNode* root, int k) 
    {
        //中序遍历

        MinTraverse(root);

        int length = v.size();
        for(int i = 0 ; i  < length - 1 ;++i)
        {
            for(int j = i + 1 ; j < length; ++j)
            {
                if(v[j] == k - v[i])
                {
                    return  true;
                }
            }
        }
        return false;

    }

    void MinTraverse(TreeNode * root)
    {
        if(root == nullptr)
        {
            return;
        }
        MinTraverse(root->left);
        v.push_back(root->val);
        MinTraverse(root->right);
    }
};

你可能感兴趣的:(leetcode,c++,leetcode,数据结构,算法)