程式語言 - LeetCode - C - 236. Lowest Common Ancestor of a Binary Tree



參考資訊:
https://www.cnblogs.com/grandyang/p/4641968.html

題目:


解答:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
struct TreeNode* lowestCommonAncestor(struct TreeNode *root, struct TreeNode *p, struct TreeNode *q)
{
    struct TreeNode *l = NULL;
    struct TreeNode *r = NULL;

    if (!root || (root == p) || (root == q)) {
        return root;
    }

    l = lowestCommonAncestor(root->left, p, q);
    r = lowestCommonAncestor(root->right, p, q);

    if (l && r) {
        return root;
    }

    return l ? l : r;
}