By independent nodes, I mean that the returned set can not contain nodes that are in immediate relations, parent and child cannot both be included. I tried to use Google, with no success. I don’t think I have the right search words.
A link, any help would be very much appreciated. Just started on this now.
I need to return the actual set of independent nodes, not just the amount.
You can compute this recursive function with dynamic programming (memoization):
The idea is, you can pick a node or choose not to pick it. If you pick it, you can’t pick its direct children but you can pick the maximum set from its grandchildren. If you don’t pick it, you can pick maximum set from the direct children.
If you need the set itself, you just have to store how you selected “Max” for each node. It’s similar to the LCS algorithm.
This algorithm is O(n). It works on trees in general, not just binary trees.