zoukankan      html  css  js  c++  java
  • LintCode 近期公共祖先

    中等 近期公共祖先

    34%
    通过

    给定一棵二叉树,找到两个节点的近期公共父节点(LCA)。

    近期公共祖先是两个节点的公共的祖先节点且具有最大深度。

    您在真实的面试中是否遇到过这个题? 
    Yes
    例子

    对于以下这棵二叉树

      4
     / 
    3   7
       / 
      5   6
    

    LCA(3, 5) = 4

    LCA(5, 6) = 7

    LCA(6, 7) = 7



    /**
     * Definition of TreeNode:
     * class TreeNode {
     * public:
     *     int val;
     *     TreeNode *left, *right;
     *     TreeNode(int val) {
     *         this->val = val;
     *         this->left = this->right = NULL;
     *     }
     * }
     */
    class Solution {
    public:
        /**
         * @param root: The root of the binary search tree.
         * @param A and B: two nodes in a Binary.
         * @return: Return the least common ancestor(LCA) of the two nodes.
         */
        bool   postOrder(TreeNode *root, TreeNode *A) {
        if (root == nullptr)
            return false;
        if (root == A) {
            return true;
        }
        return (postOrder(root->left,A)|| postOrder(root->right,A));
    }
        TreeNode *lowestCommonAncestor(TreeNode *root, TreeNode *A, TreeNode *B) {
            // write your code here
            if (root == nullptr )
            return nullptr;
        bool ra = postOrder(root->right,A);
        bool rb = postOrder(root->right,B);
        bool la = postOrder(root->left,A);
        bool lb = postOrder(root->left,B);
            if (ra && rb) {
                return lowestCommonAncestor (root->right,A,B);
            } else if (la && lb) {
                return lowestCommonAncestor(root->left,A,B);
            } else {
                return root;
            }
        }
    
    };
    


  • 相关阅读:
    localStorage存储数组以及取数组方法
    jq选择CheckBox进行排序
    js定时函数,定时改变字体的大小
    JQuery Datatable用法
    WebSocket实战
    代码段
    黎活明给程序员的忠告 收藏
    雅砻江后勤项目经验总结
    Java泛型方法
    回忆,梦的开始
  • 原文地址:https://www.cnblogs.com/yfceshi/p/6889739.html
Copyright © 2011-2022 走看看