【Leetcode每日一题】1261. 在受污染的二叉树中查找元素

51 阅读1分钟

题目描述:

ts([-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]
解释:
FindElements findElements = new FindElements([-1,null,-1,-1,null,-1]);
findElements.find(2); // return True
findElements.find(3); // return False
findElements.find(4); // return False
findElements.find(5); // return True

解法:

var FindElements = function(root) {    this.elements = [];    const dfs = (parent) => {        if (!parent) {            return;        }        if (parent.left) {            parent.left.val = parent.val * 2 + 1;            this.elements.push(parent.val * 2 + 1);        }        if (parent.right) {            parent.right.val = parent.val * 2 + 2;            this.elements.push(parent.val * 2 + 2);        }        dfs(parent.left)        dfs(parent.right)    }    root.val = 0;    dfs(root)    this.elements.push(0);};/**  * @param {number} target * @return {boolean} */FindElements.prototype.find = function(target) {    return this.elements.includes(target)};

注意:

函数的原型定义时用function定义。若用箭头函数定义,this指向会出问题。