给出两棵二叉搜索树,请你从两棵树中各找出一个节点,使得这两个节点的值之和等于目标值 Target。
如果可以找到返回 True,否则返回 False。
/**
-
Definition for a binary tree node.
-
struct TreeNode {
-
int val;
-
TreeNode *left;
-
TreeNode *right;
-
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
-
};
/
class Solution {
vector l;
vector r;
void Inord_l(TreeNodeT)
{
if(T)
{
Inord_l(T->left);
l.push_back(T->val);
Inord_l(T->right);
}
}void Inord_r(TreeNode*T)
{
if(T)
{
Inord_r(T->left);
r.push_back(T->val);
Inord_r(T->right);
}
}
public:
bool twoSumBSTs(TreeNode* root1, TreeNode* root2, int target) {Inord_l(root1); Inord_r(root2); for(int i=0;i<l.size();i++) for(int j=0;j<r.size();j++) { if(l[i]+r[j]==target) return true; } return false;
}
};
注释:先中序遍历,就会把元素按照顺序存在容器中了,再两个for循环