File tree 1 file changed +44
-0
lines changed 1 file changed +44
-0
lines changed Original file line number Diff line number Diff line change
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 > queue = new LinkedList <>();
19
+ queue .add (root );
20
+ int prevLevelSum = root .val ;
21
+ while (!queue .isEmpty ()) {
22
+ int size = queue .size ();
23
+ int levelSum = 0 ;
24
+ for (int i = 0 ; i < size ; i ++) {
25
+ TreeNode node = queue .remove ();
26
+ node .val = prevLevelSum - node .val ;
27
+ int siblingSum = (node .left != null ? node .left .val : 0 ) +
28
+ (node .right != null ? node .right .val : 0 );
29
+ if (node .left != null ) {
30
+ levelSum += node .left .val ;
31
+ node .left .val = siblingSum ;
32
+ queue .add (node .left );
33
+ }
34
+ if (node .right != null ) {
35
+ levelSum += node .right .val ;
36
+ node .right .val = siblingSum ;
37
+ queue .add (node .right );
38
+ }
39
+ }
40
+ prevLevelSum = levelSum ;
41
+ }
42
+ return root ;
43
+ }
44
+ }
You can’t perform that action at this time.
0 commit comments