Question:
题意很简单,FindElements函数负责重构建树;
find函数用来判断所查找的值是否在树里存在。
解题思路:
首先对树进行dfs,在这个dfs的过程中,对树的每个节点进行赋值;
为了方便find函数的判断,在这个过程中用HashSet来存储每一个节点的值。
具体代码:
class FindElements {
public HashSet<Integer> treeVal = new HashSet<>();
public FindElements(TreeNode root) {
dfs(root, 0);
}
public void dfs(TreeNode node, int val){
if(node == null){
return ;
}
node.val = val;
treeVal.add(node.val);
if(node.left != null){
dfs(node.left, 2 * val + 1);
}
if(node.right != null){
dfs(node.right, 2 * val + 2);
}
}
public boolean find(int target) {
return treeVal.contains(target);
}
}