Lowest Common Ancestor of a Binary Tree III (LC #1650) gives nodes parent pointers. This transforms into finding the intersection of two linked lists. From each node, traverse to root counting depth. Start the deeper node that many steps ahead. Then move both pointers up together until they meet. This runs in time and space. Alternative: use a hash set to store ancestors of one node, then traverse from the other until you hit the set. Meta reports this was asked frequently in the past months.
##### ###### ##### ### # # ### # # ###### ## ## ## ## ## ## ## # # # # # ## ##### #### ##### # # # # # # # #### ## # ## ## ## ## # # # # # ## ## # ###### ## ### # ### # ######
$ curl repovive.com/roadmaps/meta-interview-prep/trees/lowest-common-ancestor-iii
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░█████████████████████████████████████████████████████████████████████████████████