Skip to content

Commit 975d71b

Browse files
authored
Create Cousins in Binary Tree II.java
1 parent 7b253d7 commit 975d71b

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

Medium/Cousins in Binary Tree II.java

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
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+
}

0 commit comments

Comments
 (0)