zoukankan      html  css  js  c++  java
  • 235. Lowest Common Ancestor of a Binary Search Tree

    Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BST.

    According to the definition of LCA on Wikipedia: “The lowest common ancestor is defined between two nodes v and w as the lowest node in T that has both v and w as descendants (where we allow a node to be a descendant of itself).”

            _______6______
           /              
        ___2__          ___8__
       /              /      
       0      _4       7       9
             /  
             3   5
    

    For example, the lowest common ancestor (LCA) of nodes 2 and 8 is 6. Another example is LCA of nodes 2 and 4 is 2, since a node can be a descendant of itself according to the LCA definition.

    ==================

    题目:在平衡二叉树中寻找任意两个节点的公共祖先

    思路:

    利用while循环,就可以循环遍历BST树,

    判断的条件如下:

    如果p,q都小于root,那么在root的左子树中查找

    如果p,q都大于root,那么在root的右子树中查找

    如果p,q在root的两边,那么root就是要求得公共节点

    如果q,q中有一个与root指针相同,那么返回root即可。

    =======

    code:

    /**
     * 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) {
            TreeNode *tmp =root;
            while(tmp!=nullptr){
                if(p->val<tmp->val && q->val<tmp->val){
                    tmp = tmp->left;
                }else if(p->val>tmp->val && q->val>tmp->val){
                    tmp = tmp->right;
                }else if((p->val>tmp->val && q->val<tmp->val) || (p->val<tmp->val && q->val>tmp->val)){
                    return tmp;
                }else if(p->val==tmp->val){
                    return p;
                }else if(q->val==tmp->val){
                    return q;
                }
            }//while
         return nullptr;   
        }//end-function
    };
  • 相关阅读:
    maven系列--eclipse的m2插件
    eclipse安装反编译插件
    maven系列--settings.xml
    maven系列--maven常用命令
    maven系列--maven目录
    centos 常用命令
    iis7.0 发生未知 FastCGI错误,错误代码 0x8007010b 的解决办法
    git 提交的步骤
    关于PHP函数传参的注意点
    关于SQL查询语句中的LIKE模糊查询的解释
  • 原文地址:https://www.cnblogs.com/li-daphne/p/5624230.html
Copyright © 2011-2022 走看看