First, randomly pick up a node and apply DFS to calculate the number of nodes for each of its branch (step 1)
If none of its branch has the number of nodes bigger than n/2, it is the node we want
If one of its branch does have more than n/2 nodes, then pick up the node in this branch to do step 1
this seems like the partition process in Quick Select which narrows the range after each search
the worst case can be n times of attempts to finally pick the correct node
and the average is less than n times for the selection
each DFS consumes O(n) time
thus, the total time complexity is O(n^2)