**Problem Statement:**
Given the required input arguments, write an efficient algorithm to solve the **Lowest Common Ancestor (General)** problem. Implement the required logic as specified by standard definitions for this classic algorithmic challenge.
**Hint / Expected Approach:**
Post-order DFS: found both children case
**Edge Cases to Consider:**
- (1) One or both nodes not in tree
- (2) Root is LCA
- (3) Node is ancestor of the other
Examples
Example 1
Input:[3,5,1,6,2,0,8,null,null,7,4], p=5, q=1
Output:Node 3
Explanation: Root is LCA
Example 2
Input:[3,5,1,6,2,0,8,null,null,7,4], p=5, q=4
Output:Node 5
Explanation: p is ancestor of q
Example 3
Input:[1,2], p=1, q=2
Output:Node 1
Explanation: Root is parent
Constraints
▪The number of nodes in the tree is in the range [0, 2000]
▪-1000 <= Node.val <= 1000
▪Ensure depth-first or breadth-first traversals are memory-efficient