Given a binary tree, return the minimum number of edits to make the value of each node equal to the average of its direct children's. Note that you can only update the value of each tree node, and changing the tree structure is not allowed.
"average of its direct children's" means the average of left and right children.
1. If the left(right) children doesn't exist, then just let the root value equal to the value of its right(left) children.
2. If the root is leaf, then the criteria is always met for this node.
3. It doesn't matter if the value is int or float. We can use float.
Sample 1 :
2
/ \
0 2
/ \
0 2
/ \
0 1
/ \
0 1
/ \
0 1
Output : 5
Sample 2 :
2
\
2
\
2
\
1
\
1
\
1
Output : 3
Bound on the size of the tree?
I am unable to figure out even a brute force solution. So a brute force solution can be helpful. On top of that as it was an interview I am unaware of the bounds.
Hey I have a gut feeling that it can be solved using rerouting technique with dp. Have you tried it yet?
Consider a stick tree that goes 2->2->1. The answer should be 1 but your code returns 2.