2641.js
/** ------------------------------------------------------------------------------
*
* 2641. Cousins in Binary Tree II
* Topics: Dfs, Binary Tree
* https://leetcode.com/problems/cousins-in-binary-tree-ii/description/?envType=daily-question&envId=2024-10-23
*
------------------------------------------------------------------------------ */
/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {TreeNode} root
* @return {TreeNode}
*/
var replaceValueInTree = function (root) {
let sum = root.left ? root.left.val : 0
sum += root.right ? root.right.val : 0
let queue = [[root, sum]]
while (queue.length) {
const nextQueue = []
const cur = sum
for (let i = 0; i < queue.length; i++) {
const node = queue[i][0]
const sub = queue[i][1]
node.val = cur - sub
let next = node.left ? node.left.val : 0
next += node.right ? node.right.val : 0
sum += next
if (node.left) nextQueue.push([node.left, next])
if (node.right) nextQueue.push([node.right, next])
}
sum -= cur
queue = nextQueue
}
return root
}
console.log()