松鼠的窝 2018-02-13
给定一个二叉搜索树和一个目标编号,如果BST中存在两个元素,若它们的和等于给定值,则返回true。
Example 1:
Input: 5 / \ 3 6 / \ \ 2 4 7 Target = 9 Output: True
class 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); } } }
我