• 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.
      
    思路,先判断入口是否有非法输入。
     
    1 如果某一个root==p || root == q,那么LCA肯定是root(因为是top down,LCA肯定在root所囊括的树上,而root又是p q其中一个节点了,那么另外一个节点肯定在root之下,那么root就是LCA),那么返回root
     
    2 如果root<min(p, q),那么LCA肯定在右子树上,那么递归
     
    3 如果max(p, q)<root,那么LCA肯定在左子树上,那么递归
     
    4 如果p<root<q,那么root肯定为LCA
    1. /**
    2. * Definition for a binary tree node.
    3. * struct TreeNode {
    4. * int val;
    5. * TreeNode *left;
    6. * TreeNode *right;
    7. * TreeNode(int x) : val(x), left(NULL), right(NULL) {}
    8. * };
    9. */
    10. class Solution {
    11. public:
    12. TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
    13. if(root==p||root==q)
    14. return root;
    15. if(p->val>q->val)
    16. swap(p,q);
    17. if(root->val > p->val && root->val < q->val)
    18. return root;
    19. TreeNode *node;
    20. if(root->val > max(p->val,q->val))
    21. node=lowestCommonAncestor(root->left,p,q);
    22. if(root->val < min(p->val,q->val))
    23. node=lowestCommonAncestor(root->right,p,q);
    24. return node;
    25. }
    26. };








  • 相关阅读:
    python学习笔记3:python读写文件
    python学习笔记3:字典
    python学习笔记3:列表、元组和集合
    python学习笔记2:字符串
    Linux之DNS
    网络安全
    linux之防火墙
    Linux之进程管理命令
    Linux之进程管理基础
    Linux之网络
  • 原文地址:https://www.cnblogs.com/zhxshseu/p/5284969.html
Copyright © 2020-2023  润新知