• 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
    };
  • 相关阅读:
    SWFUpload说明文档
    Ubuntu中root用户和user用户的相互切换
    不用IF比较两数大小
    Linux服务器下验证码图片不显示问题
    常用CSS语法
    常用CSS语法
    漫谈DataList的用法
    Session丢失浅析
    浅谈C#托管程序中的资源释放问题
    C#2.0 泛型详解
  • 原文地址:https://www.cnblogs.com/li-daphne/p/5624230.html
Copyright © 2020-2023  润新知