1261. 在受污染的二叉树中查找元素
给出一个满足下述规则的二叉树:
- root.val == 0
 
- 如果 treeNode.val == x 且 treeNode.left != null,那么 treeNode.left.val == 2 * x + 1
 
- 如果 treeNode.val == x 且 treeNode.right != null,那么 treeNode.right.val == 2 * x + 2
 
现在这个二叉树受到「污染」,所有的 treeNode.val 都变成了 -1。
请你先还原二叉树,然后实现 FindElements 类:
- FindElements(TreeNode* root) 用受污染的二叉树初始化对象,你需要先把它还原。
 
- bool find(int target) 判断目标值 target 是否存在于还原后的二叉树中并返回结果。
 
链接
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
   | 
 
 
 
 
 
 
 
 
 
 
 
 
  class FindElements {   node: TreeNode   constructor(root: TreeNode | null) {     this.init(root)     this.node = root   }   init(node: TreeNode) {     if (node === null) return     if (node.val === -1) {       node.val = 0     }     if (node.left) {       node.left.val = node.val * 2 + 1     }     if (node.right) {       node.right.val = node.val * 2 + 2     }     this.init(node.left)     this.init(node.right)   }   findDfs(node: TreeNode, target: number): boolean {     if (node === null) return false     const l = this.findDfs(node.left, target)     const r = this.findDfs(node.right, target)     return node.val === target || l || r   }   find(target: number): boolean {     return this.findDfs(this.node, target)   } }
 
 
 
 
 
 
 
  |