前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode 1261. 在受污染的二叉树中查找元素(树&哈希)

LeetCode 1261. 在受污染的二叉树中查找元素(树&哈希)

作者头像
Michael阿明
发布2020-07-13 16:13:52
6920
发布2020-07-13 16:13:52
举报

1. 题目

给出一个满足下述规则的二叉树:

  • 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 是否存在于还原后的二叉树中并返回结果。
代码语言:javascript
复制
提示:
TreeNode.val == -1
二叉树的高度不超过 20
节点的总数在 [1, 10^4] 之间
调用 find() 的总次数在 [1, 10^4] 之间
0 <= target <= 10^6

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/find-elements-in-a-contaminated-binary-tree 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/find-elements-in-a-contaminated-binary-tree 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 二叉树的遍历
  • 哈希表的O(1)时间查找

2.1 DFS

代码语言:javascript
复制
class FindElements {
	unordered_set<int> s;
public:
    FindElements(TreeNode* root) {
        dfs(root,0);
    }

    void dfs(TreeNode* root, int val)
    {
    	if(root == NULL)
    		return;
    	s.insert(val);
    	dfs(root->left,(val<<1)+1);
    	dfs(root->right,(val<<1)+2);
    }
    
    bool find(int target) {
        return s.count(target);
    }
};
在这里插入图片描述
在这里插入图片描述

2.2 BFS

代码语言:javascript
复制
class FindElements {
	unordered_set<int> s;
public:
    FindElements(TreeNode* root) {
        queue<pair<TreeNode*,int>> q;
        q.push(make_pair(root,0));
        pair<TreeNode*,int> tp;
        while(!q.empty())
        {
        	tp = q.front();
        	q.pop();
        	s.insert(tp.second);
        	if(tp.first->left)
        		q.push(make_pair(tp.first->left, (tp.second<<1)+1));
        	if(tp.first->right)
        		q.push(make_pair(tp.first->right, (tp.second<<1)+2));
        }
    }

    bool find(int target) {
        return s.count(target);
    }
};
在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-11-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 题目
  • 2. 解题
    • 2.1 DFS
      • 2.2 BFS
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档