Người quan sát cô đơn
Senior Member
Java:
class Solution {
public TreeNode replaceValueInTree(TreeNode root) {
List<List<Integer>> levelSum = new ArrayList();
Queue<TreeNode> queue = new LinkedList();
root.val = 0;
int sum = 0;
//create list
queue.add(root);
while(!queue.isEmpty()){
int size = queue.size();
List<Integer> list = new ArrayList();
for(int i = 0;i<size;i++){
sum = 0;
TreeNode node = queue.poll();
if(node.right!=null) {
sum+=node.right.val;
queue.add(node.right);
}
if(node.left!=null){
sum+=node.left.val;
queue.add(node.left);
}
list.add(sum);
}
levelSum.add(list);
}
//modify tree
int index = 0;
queue.add(root);
while(!queue.isEmpty()){
int size = queue.size();
sum = 0;
List<Integer> list = levelSum.get(index++);
for(int i:list)
sum+=i;
for(int i = 0;i<size;i++){
TreeNode node = queue.poll();
int val = list.get(i);
if(node.right!=null) {
queue.add(node.right);
node.right.val = sum-val;
}
if(node.left!=null){
queue.add(node.left);
node.left.val = sum-val;
}
}
}
return root;
}
}

dev già làm leetcode khổ thấy mẹ 