路径总和2
本来以为对象在项目里面坑我就算了,在刷题里也坑我,!!! 这个题目本来我不是这么写的,是把这个写成tA.push(nodeArray),然后一直过不了,这是为什么呢,就是这个对象,犹豫被放到了tA里面的饮用可能有多个,你在改变前一个的时候,因为是同一个引用,后面的也跟着被改变了!!什么意思,画图:
var pathSum = function(root, targetSum) {
if(!root)return []
let tA=[[]]
let ans=[]
let queue=[root]
let count=[0]
while(queue.length){
let node=queue.shift()
let nodeArray=tA.shift()
let s=count.shift()
s+=node.val
nodeArray.push(node.val)
if(node.left==null&&node.right==null&&s==targetSum)ans.push(nodeArray)
if(node.left){
queue.push(node.left)
tA.push([...nodeArray])
count.push(s)
}
if(node.right){
queue.push(node.right)
tA.push([...nodeArray])
count.push(s)
}
}
return ans
};