题目描述:
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指向会出问题。