leetcode 1261.在受污染的二叉树中查找元素
1.题目要求:
2.题目代码:
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class FindElements {
public:vector<int> array;FindElements(TreeNode* root) {int count = 1;int nextcount = 0;queue<TreeNode*> dequence;root->val = 0;dequence.push(root);int size = 1;//利用层序遍历去修改受污染的二叉树while(size != 0){for(int i = 0;i < count;i++){TreeNode* temp = dequence.front();array.push_back(temp->val);if(temp->left != NULL){temp->left->val = 2 * (temp->val) + 1;dequence.push(temp->left);nextcount++;size++;}if(temp->right != NULL){temp->right->val = 2 * (temp->val) + 2;dequence.push(temp->right);nextcount++;size++;}dequence.pop();size--;}count = nextcount;nextcount = 0;}}bool find(int target) {for(int i = 0;i < array.size();i++){if(array[i] == target){return true;}}return false;}
};/*** Your FindElements object will be instantiated and called as such:* FindElements* obj = new FindElements(root);* bool param_1 = obj->find(target);*/