松鼠的窝 2018-02-13
给定一个二叉搜索树和一个目标编号,如果BST中存在两个元素,若它们的和等于给定值,则返回true。
Example 1:
Input:
5
/ \
3 6
/ \ \
2 4 7
Target = 9
Output: Trueclass Solution {
ArrayList<Integer> ints = null;
public boolean findTarget(TreeNode root, int k) {
ints = new ArrayList<>();
preTraverse(root);
int i =ints.size()-1;
int j = 0;
<strong>//在排序好的列表中找到两个和为目标值的序号
while (j<i)
{
int sum = ints.get(i)+ints.get(j);
if(sum==k)
return true;
if(sum<k)
j++;
else
i--;
}
return false;
}
</strong> //中序遍历,可以将二叉树从小到达排列出来!
public void preTraverse(TreeNode T)
{
if(T!=null)
{
preTraverse(T.left);
ints.add(T.val);
preTraverse(T.right);
}
}
}我