LeetCode-在受污染的二叉树中查找元素

Posted Garrett_Wale

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode-在受污染的二叉树中查找元素相关的知识,希望对你有一定的参考价值。

在受污染的二叉树中查找元素

LeetCode-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?是否存在于还原后的二叉树中并返回结果。
 **/
#include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
#include<cstdio>
#include<queue>
#include<vector>
#include<map>
using namespace std;
// Definition for a binary tree node.
struct TreeNode {
    int val;
    TreeNode *left;
    TreeNode *right;
    TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
/**
       0
     /       1     2
   /   3  4
**/
class FindElements {
private:
    map<int,int>ma;
    void DFS(TreeNode* root){
        if(root->left){
            root->left->val=2*(root->val)+1;
            ma[root->left->val]++;
            DFS(root->left);
        }
        if(root->right){
            root->right->val=2*(root->val)+2;
            ma[root->right->val]++;
            DFS(root->right);
        }
    }
public:
    FindElements(TreeNode* root) {
        root->val=0;
        ma[0]++;
        DFS(root);
        
    }
    bool find(int target) {
        return ma[target];
    }
    
};
int main(){
    TreeNode* t1=new TreeNode(-1);
    TreeNode* t2=new TreeNode(-1);
    TreeNode* t3=new TreeNode(-1);
    TreeNode* t4=new TreeNode(-1);
    TreeNode* t5=new TreeNode(-1);
    t2->left=t4;t2->right=t5;
    t1->left=t2;t1->right=t3;
    FindElements* obj = new FindElements(t1);
    cout<<obj->find(3)<<endl;
    
    system("pause");
    return 0;
}

以上是关于LeetCode-在受污染的二叉树中查找元素的主要内容,如果未能解决你的问题,请参考以下文章

1261. 在受污染的二叉树中查找元素

1261. 在受污染的二叉树中查找元素

LeetCode 5264 在受污染的二叉树中查找元素 Find Elements in a Contaminated Binary Tree

1261. 在受污染的二叉树中查找元素

学习总结

leetcode230二叉树中第K小的元素