If you store the parent node of each node, a more efficient solution can be implemented, as long as you don't care about the order of the elements in the result list:
- Create a new list to save the result
- Find the node of interest
- Add to the list all the nodes in the left subtree of the node found on step 2, using any traversal you fancy (in-order, pre-order, etc.)
- Starting from the parent of the node found on step 2, go up through all the parents adding each node in the way until the current node is either the root node or a node to the left of its parent
- Finally, add all the elements to the left of the node found on step 4, again using any traversal