https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-tree/
1. Use recursion:
// 16 ms 14.4 MB/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/class Solution {public:TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {if (!root || root == p || root == q) return root;TreeNode* l = lowestCommonAncestor(root->left, p, q);TreeNode* r = lowestCommonAncestor(root->right, p, q);if (l && r) return root;if(l)return l;elsereturn r;}};
