Lowest Common Ancestor of a Binary Tree IV
You can solve this problem by performing a Depth First Search (DFS) through the tree and checking if the nodes are in the provided list. Below is a stepbystep solution:


Explanation
 Convert the list of nodes to a set for quick lookup.
 Create a recursive function
dfs
that takes a node as input.  If the current node is in the nodes set, return the node as it’s part of the LCA.
 Recursively call
dfs
on the left and right children of the current node.  If both left and right children return nonnull values, then the current node is the lowest common ancestor of those nodes, so return it.
 Otherwise, return the nonnull child that contains the node(s), or null if neither child contains a node.
 Call
dfs
starting from the root and return the result, which will be the LCA of all the nodes innodes
.