Skip to content

Commit 9bf7edf

Browse files
committed
Time: 12 ms (99.15%), Space: 78.5 MB (49.58%) - LeetHub
1 parent 8720dfe commit 9bf7edf

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* public class TreeNode {
4+
* int val;
5+
* TreeNode left;
6+
* TreeNode right;
7+
* TreeNode() {}
8+
* TreeNode(int val) { this.val = val; }
9+
* TreeNode(int val, TreeNode left, TreeNode right) {
10+
* this.val = val;
11+
* this.left = left;
12+
* this.right = right;
13+
* }
14+
* }
15+
*/
16+
class Solution {
17+
public TreeNode replaceValueInTree(TreeNode root) {
18+
Queue<TreeNode> q = new LinkedList<>();
19+
q.offer(root);
20+
int currentLevelSum = root.val;
21+
while (!q.isEmpty()) {
22+
int nextLevelSum = 0;
23+
for (int sz = q.size(); sz > 0; --sz) {
24+
TreeNode n = q.poll();
25+
n.val = currentLevelSum - n.val;
26+
for (TreeNode kid : new TreeNode[]{n.left, n.right}) {
27+
if (kid != null) {
28+
q.offer(kid);
29+
nextLevelSum += kid.val;
30+
}
31+
}
32+
if (n.left != null && n.right != null) {
33+
int sum = n.left.val + n.right.val;
34+
n.left.val = n.right.val = sum;
35+
}
36+
}
37+
currentLevelSum = nextLevelSum;
38+
}
39+
return root;
40+
}
41+
}

0 commit comments

Comments
 (0)