# [leetcode~dfs]1261. 在受污染的二叉树中查找元素

root.val == 0

FindElements(TreeNode* root) 用受污染的二叉树初始化对象，你需要先把它还原。

bool find(int target) 判断目标值 target 是否存在于还原后的二叉树中并返回结果。

[“FindElements”,“find”,“find”]

[[[-1,null,-1]],[1],[2]]

[null,false,true]

FindElements findElements = new FindElements([-1,null,-1]);

findElements.find(1); // return False

findElements.find(2); // return True

[“FindElements”,“find”,“find”,“find”]

[[[-1,-1,-1,-1,-1]],[1],[3],[5]]

[null,true,true,false]

FindElements findElements = new FindElements([-1,-1,-1,-1,-1]);

findElements.find(1); // return True

findElements.find(3); // return True

findElements.find(5); // return False

[“FindElements”,“find”,“find”,“find”,“find”]

[[[-1,null,-1,-1,null,-1]],[2],[3],[4],[5]]

[null,true,false,false,true]

FindElements findElements = new FindElements([-1,null,-1,-1,null,-1]);

findElements.find(2); // return True

findElements.find(3); // return False

findElements.find(4); // return False

findElements.find(5); // return True

TreeNode.val == -1

0 <= target <= 10^6

/**
* Definition for a binary tree node.
* public class TreeNode {
*     int val;
*     TreeNode left;
*     TreeNode right;
*     TreeNode() {}
*     TreeNode(int val) { this.val = val; }
*     TreeNode(int val, TreeNode left, TreeNode right) {
*         this.val = val;
*         this.left = left;
*         this.right = right;
*     }
* }
*/
class FindElements {
private Set<Integer> valSet;

public FindElements(TreeNode root) {
this.valSet = new HashSet<>();
dfs(root, 0);
}

public boolean find(int target) {
return valSet.contains(target);
}

private void dfs(TreeNode node, int val) {
if (node == null) {
return;
}
node.val = val;
dfs(node.left, val * 2 + 1);
dfs(node.right, val * 2 + 2);
}
}

/**
* Your FindElements object will be instantiated and called as such:
* FindElements obj = new FindElements(root);
* boolean param_1 = obj.find(target);
*/


|
5天前
|

LeetCode力扣第114题：多种算法实现 将二叉树展开为链表
LeetCode力扣第114题：多种算法实现 将二叉树展开为链表
6 0
|
2天前
|

【经典LeetCode算法题目专栏分类】【第10期】排序问题、股票问题与TOP K问题：翻转对、买卖股票最佳时机、数组中第K个最大/最小元素
【经典LeetCode算法题目专栏分类】【第10期】排序问题、股票问题与TOP K问题：翻转对、买卖股票最佳时机、数组中第K个最大/最小元素
5 1
|
2天前
|

【经典LeetCode算法题目专栏分类】【第9期】深度优先搜索DFS与并查集：括号生成、岛屿问题、扫雷游戏
【经典LeetCode算法题目专栏分类】【第9期】深度优先搜索DFS与并查集：括号生成、岛屿问题、扫雷游戏
4 0
|
5天前
|

10 2
|
5天前
|

LeetCode题目104: 二叉树的最大深度(递归\迭代\层序遍历\尾递归优化\分治法实现 )
LeetCode题目104: 二叉树的最大深度(递归\迭代\层序遍历\尾递归优化\分治法实现 )
5 0
|
5天前
|

LeetCode力扣题目111:多种算法对比实现二叉树的最小深度
LeetCode力扣题目111:多种算法对比实现二叉树的最小深度
6 0
|
5天前
|

LeetCode 题目 102：二叉树的层序遍历
LeetCode 题目 102：二叉树的层序遍历
6 1
|
5天前
|

7 1
|
19天前
|

【力扣刷题】两数求和、移动零、相交链表、反转链表
【力扣刷题】两数求和、移动零、相交链表、反转链表
22 2
|
1天前
|

【LeetCode刷题】只出现一次的数字（Ⅰ、Ⅱ、Ⅲ）
【LeetCode刷题】只出现一次的数字（Ⅰ、Ⅱ、Ⅲ）
6 0