当前位置:网站首页>1261. 在受污染的二叉树中查找元素
1261. 在受污染的二叉树中查找元素
2022-08-09 02:22:00 【Mr Gao】
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:
输入:
[“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
示例 2:
输入:
[“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
示例 3:
输入:
[“FindElements”,“find”,“find”,“find”,“find”]
[[[-1,null,-1,-1,null,-1]],[2],[3],[4],[5]]
输出:
[null,true,false,false,true]
解释:
解题代码如下:
/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */
void dfs(struct TreeNode* root,int val){
if(root){
root->val=val;
dfs(root->left,val*2+1);
dfs(root->right,val*2+2);
}
}
void dfs_find(struct TreeNode* root,int *r,int val){
if(*r==0&&root){
if(root->val==val){
*r=1;
}
else{
dfs_find(root->right,r,val);
dfs_find(root->left,r,val);
}
}
}
typedef struct {
struct TreeNode* root;
} FindElements;
FindElements* findElementsCreate(struct TreeNode* root) {
dfs(root,0);
FindElements *f=(FindElements *)malloc(sizeof(FindElements));
f->root=root;
return f;
}
bool findElementsFind(FindElements* obj, int target) {
int *r=(int *)malloc(sizeof(int));
*r=0;
dfs_find(obj->root,r,target);
if(*r==0){
return false;
}
return true;
}
void findElementsFree(FindElements* obj) {
}
/** * Your FindElements struct will be instantiated and called as such: * FindElements* obj = findElementsCreate(root); * bool param_1 = findElementsFind(obj, target); * findElementsFree(obj); */
边栏推荐
猜你喜欢
ROS2错误:不支持OpenGL 1.5 GLRenderSystem:: ci initialiseContext在C: \ \ ws \构建……
mysql 5.7 入坑
js实现数组去重的方式(7种)
MT4 / MQ4L entry to the master of EA tutorial lesson two (2) - - MQL language commonly used function account information commonly used functions
spdlog日志库的封装使用
2.1-----27. Remove elements
Summary of Database Design
2022杭电多校第五场1007(生成函数+启发式合并+ntt)
力扣刷题记录3.1-----977. 有序数组的平方
Group DETR:分组一对多匹配是加速DETR收敛的关键
随机推荐
Likou Brush Question Record 8.1-----206. Reverse linked list
力扣刷题记录3.1-----977. 有序数组的平方
2020.10.13 Development log
9.1-----24. Swap the nodes in the linked list in pairs
The most fierce "employee" in history, madly complaining about the billionaire boss Xiao Zha: So rich, he always wears the same clothes!
A40i gxl3680 ts_print报错:tslib: Selected device is not a touchscreen (must support ABS and KEY event
数仓第一篇:基础架构
最新工业界推荐系统数据集-召回排序模型原理、结构及代码实战整理分享
How to install yii2
eladmin容器部署超详细过程
UsernameAuthenticationFilter授权成功后调用AuthenticationSuccessHandler时的解析
pytorch相关知识点总结
Line segment tree of knowledge
eladmin container deployment super detailed process
配置文件的读取-TOML
The last exam before the NPDP revision!caution
Redis - 时间序列数据类型的保存方案和消息队列实现
[C language brush questions] Application of fast and slow pointers in linked lists
OJ:L2-012 关于堆的判断
2022 PMP Project Management Certification Exam Registration Guide (1)