It is easy to observe that we need to split the sizes of the subtrees evenly. The problem is transformed to the following basic pattern:

Given an array $a$, find a way to partition $a$ into two parts, such that the difference between the sum of these two parts is minimized.

This can be solved via knapsack DP. Note that we donâ€™t need to calculate the sizes of subtrees before running the DP, we can do this while traversing the tree. The resulting time complexity is $O(n^2)$.