版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/majichen95/article/details/85839730
给一棵二叉搜索树以及一个整数 n
, 在树中找到和为 n
的两个数字
样例
给一棵BST:
4
/ \
2 5
/ \
1 3
以及一个整数 n = 3
返回 [1, 2]
或 [2, 1]
注意事项
Without any extra space.
解题思路1:
先中序遍历将结果保存在HashSet中,然后再寻找。
/**
* Definition of TreeNode:
* public class TreeNode {
* public int val;
* public TreeNode left, right;
* public TreeNode(int val) {
* this.val = val;
* this.left = this.right = null;
* }
* }
*/
public class Solution {
/*
* @param : the root of tree
* @param : the target sum
* @return: two numbers from tree which sum is n
*/
public int[] twoSum(TreeNode root, int n) {
// write your code here
Set<Integer> set = new HashSet<>();
int[] res = new int[2];
if(root == null)
return null;
inOrder(root, set);
for(Integer i : set){
int temp = n - i;
if(set.contains(temp)){
res[0] = i;
res[1] = temp;
return res;
}
}
return null;
}
private void inOrder(TreeNode root, Set<Integer> set){
if(root == null)
return;
inOrder(root.left, set);
set.add(root.val);
inOrder(root.right, set);
}
}