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
    };
  • 相关阅读:
    计划任务
    Crontab 定时任务格式参数
    Nginx 内核优化
    AC自动机
    Benelux Algorithm Programming Contest 2017(D)
    BAPC2017
    2018.9青岛网络预选赛(K)
    2018.9青岛网络预选赛
    2018.9青岛网络预选赛(A)
    2018.9青岛网络预选赛(C)
  • 原文地址:https://www.cnblogs.com/li-daphne/p/5624230.html
Copyright © 2011-2022 走看看