当前位置:网站首页>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); */
边栏推荐
猜你喜欢

为什么应用程序依赖关系映射对于云迁移至关重要

spdlog日志库的封装使用

HCIP-R&S By Wakin自用笔记(3)OSPF之各类LSA及LSA更新规则

力扣刷题记录3.1-----977. 有序数组的平方

概率模型校准
![[C language brush questions] Application of fast and slow pointers in linked lists](/img/de/907192f705d9b2dc1628d480c4d7d9.png)
[C language brush questions] Application of fast and slow pointers in linked lists

通过安装VNC服务器x11vnc(或vnc4server)和配置x11vnc.service实现远程通过VNC-Viewer访问VNC服务器。

数仓第二篇: 数据模型(维度建模)

【剑指offer65】不适用加减乘除做加法

Force buckled brush problem record 7.1 -- -- -- -- -- 707. The design list
随机推荐
MT4/MQL4入门到精通外汇EA教程第一课 认识MetaEditor
Line segment tree of knowledge
spark RDD转换算子 sample
MT4/MQL4入门到精通EA课程第二课-常用的功能函数
Programmer's Daily Life | Daily Fun
Summary of Database Design
My thoughts on software development
危化企业双预防机制数字化建设工作要求
帮助安全红队取得成功的11条建议
16.flink 自定义KeySelector
Redis系列文章导航
How to install yii2
Analysis of when AuthenticationSuccessHandler is called after UsernameAuthenticationFilter is authorized successfully
Etcd realize large-scale application service management of actual combat
Z-Game on grid(牛客多校赛)
Open3D 点云曲率计算
Simple example of .reduce()
Cyclictest 简介 安装 测试
边缘计算的三个关键好处
【HNUMSC】C语言第二讲