1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| class Solution { public TreeNode replaceValueInTree(TreeNode root) { Queue<TreeNode> queue = new LinkedList<>(); queue.offer(root); root.val = 0;
while (!queue.isEmpty()) { Queue<TreeNode> nextLevelQueue = new LinkedList<>(); int nextLevelSum = 0; for (TreeNode node : queue) { if (node.left != null) { nextLevelSum += node.left.val; nextLevelQueue.offer(node.left); } if (node.right != null) { nextLevelSum += node.right.val; nextLevelQueue.offer(node.right); } }
for (TreeNode node : queue) { int childSum = (node.left != null ? node.left.val : 0) + (node.right != null ? node.right.val : 0); if (node.left != null) { node.left.val = nextLevelSum - childSum; } if (node.right != null) { node.right.val = nextLevelSum - childSum; } }
queue = nextLevelQueue; }
return root; } }
|
References
2641. Cousins in Binary Tree II