LeetCode 5264 在受污染的二叉树中查找元素 Find Elements in a Contaminated Binary Tree
题目描述
给出一个满足下述规则的二叉树:
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

输入:
["FindElements","find","find"]
[[[-,null,-]],[],[]]
输出:
[null,false,true]
解释:
FindElements findElements = new FindElements([-,null,-]);
findElements.find(); // return False
findElements.find(); // return True
样例2

输入:
["FindElements","find","find","find"]
[[[-,-,-,-,-]],[],[],[]]
输出:
[null,true,true,false]
解释:
FindElements findElements = new FindElements([-,-,-,-,-]);
findElements.find(); // return True
findElements.find(); // return True
findElements.find(); // return False
样例3

输入:
["FindElements","find","find","find","find"]
[[[-,null,-,-,null,-]],[],[],[],[]]
输出:
[null,true,false,false,true]
解释:
FindElements findElements = new FindElements([-,null,-,-,null,-]);
findElements.find(); // return True
findElements.find(); // return False
findElements.find(); // return False
findElements.find(); // return True
提示: TreeNode.val == -
二叉树的高度不超过
节点的总数在 [, ^] 之间
调用 find() 的总次数在 [, ^] 之间
<= target <= ^
算法1
使用数组表示二叉树 根为x 则左子树为2x+1 右子树为2x+2
恰好索引就是题目中各个节点的值
那么建立一个数组 记录输入二叉树所拥有的节点 查询就非常简单 直接根据查询值看该数组的索引是否已经标记
C++ 代码
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class FindElements {
public: vector<int> record; void Dfs(TreeNode* root, int k) {
if (root == NULL)
return;
root->val = k;
record[k] = ; Dfs(root->left, k * + );
Dfs(root->right, k * + );
} FindElements(TreeNode* root) {
record.resize(, -);
Dfs(root, );
} bool find(int target) {
return record[target] == ;
} }; /**
* Your FindElements object will be instantiated and called as such:
* FindElements* obj = new FindElements(root);
* bool param_1 = obj->find(target);
*/
LeetCode 5264 在受污染的二叉树中查找元素 Find Elements in a Contaminated Binary Tree的更多相关文章
- LeetCode-在受污染的二叉树中查找元素
在受污染的二叉树中查找元素 LeetCode-1261 /** * 给出一个满足下述规则的二叉树: * root.val == 0 * 如果 treeNode.val == x 且 treeNode. ...
- leetcode1261在受污染的二叉树中查找元素
题目 一颗二叉树,树根值为0,父节点为x,则左子值为2x+1,右子为2x+2.现在只有树的结构,所有值都变为-1被污染了.求污染前是否存在某个值. 构建一次树,查询会调用多次. 题解 这道题还是比较简 ...
- leetcode-163周赛-1261-在污染的二叉树中查找元素
题目描述: 方法一: class FindElements: def __init__(self, root: TreeNode): self.d = set() def f(r, x): if r: ...
- Leetcode算法【34在排序数组中查找元素】
在之前ARTS打卡中,我每次都把算法.英文文档.技巧都写在一个文章里,这样对我的帮助是挺大的,但是可能给读者来说,一下子有这么多的输入,还是需要长时间的消化. 那我现在改变下方式,将每一个模块细分化, ...
- C#LeetCode刷题之#34-在排序数组中查找元素的第一个和最后一个位置(Find First and Last Position of Element in Sorted Array)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4970 访问. 给定一个按照升序排列的整数数组 nums,和一个目 ...
- 【leetcode】1261. Find Elements in a Contaminated Binary Tree
题目如下: Given a binary tree with the following rules: root.val == 0 If treeNode.val == x and treeNode. ...
- 后序线索二叉树中查找结点*p的后继
在后序线索二叉树中查找结点*p的后继: 1.若结点*p为根,则无后继:2.若结点*p为其双亲的右孩子,则其后继为其双亲:3.若结点*p为其双亲的左孩子,且双亲无右子女,则其后继为其双亲:4.若结点*p ...
- Java实现 LeetCode 34 在排序数组中查找元素的第一个和最后一个位置
在排序数组中查找元素的第一个和最后一个位置 给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置. 你的算法时间复杂度必须是 O(log n ...
- 【LeetCode】34. 在排序数组中查找元素的第一个和最后一个位置
34. 在排序数组中查找元素的第一个和最后一个位置 知识点:数组,二分查找: 题目描述 给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置 ...
随机推荐
- 白话系列之实现自己简单的mvc式webapi框架
前言:此文为极简mvc式的api框架,只当做入门api的解析方式,并且这里也不算是mvc框架,因为没有view层,毕竟现在大部分都属于前后端分离,当然也可以提供view层,因为只是将view当做文本返 ...
- wireshark分析https
0x01 分析淘宝网站的https数据流 打开淘宝 wireshark抓取到如下 第一部分: 因为https是基于http协议上的,可以看到首先也是和http协议一样的常规的TCP三次握手的连接建立, ...
- [NOIp2009] luogu P1071 潜伏者
翘课间操和体育课来水博客. 题目描述 CCF的题面贼长,但貌似除了背景以外,每句话都删不掉.不写啦,反正也是Ctrl C的. Solution 显然这是一道码农题. #include<cstdi ...
- [BZOJ3449] [Usaco2014 Feb]Secret Code
Description Farmer John has secret message that he wants to hide from his cows; the message is a str ...
- Elastic Stack 简介
一.ElasticSearch ElasticSearch 是一个基于 Apache Lucene 的开源搜索引擎.它通过RESTful API 来隐藏Lucene的复杂性,从而让全文搜索变得简单.不 ...
- linux上war包方式安装Jenkins
我的安装环境:jdk1.8, linux系统为: [root@ipha-dev71-1 nmon]# cat /etc/redhat-release # Linux查看版本当前操作系统发行版信息 Ce ...
- (一)如何理解java面向对象编程
哲学中,事物总是螺旋式上升,波浪式前进.因而编程也逐渐向人类更容易理解的方向前进,多年来人们苦苦追求的编程境界 : 高扩展性(extensibility),高复用性(reuseable).java语言 ...
- 保存为txt
打开对话框保存为txt #region this.dDownTable = (DataTable)(this.dg1.DataContext); ) { string fName = string.E ...
- 【Bug】解决 java.sql.SQLSyntaxErrorException 异常
java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax 错误 错误详情: Caused by: java.sql. ...
- Xbim.GLTF源码解析(四):轻量化处理
原创作者:flowell,转载请标明出处:https://www.cnblogs.com/flowell/p/10839433.html 在IFC标准中,由IfcRepresentationMap支持 ...