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) } }
|