给一棵二叉搜索树以及一个整数 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);
}
}

本文介绍了一种在二叉搜索树中寻找两数之和为特定值的算法。通过中序遍历将节点值保存到HashSet中,再遍历查找是否存在目标值减当前值的配对,实现无额外空间复杂度的有效解决方案。
417

被折叠的 条评论
为什么被折叠?



