zoukankan      html  css  js  c++  java
  • Leetcode 235 Lowest Common Ancestor of a Binary Search Tree 二叉树

        给定一个二叉搜索树的两个节点,找出他们的最近公共祖先,如,

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

    2和8的最近公共祖先是6,2和4的最近公共祖先是2,假设找的3和5

    TreeNode* l =lowestCommonAncestor(root->left,p,q) ;
    TreeNode* r =lowestCommonAncestor(root->right,p,q) ;

    返回到4时两个都不是Nullptr,那么要返回4的指针 即if(l && r ) return root;
    返回到2时只有r是Nullptr,那么要返回4的指针 即else if(!l && r) return r;
    返回到6时只有l是Nullptr,那么要返回4的指针 即else if(l && !r) return l;
    返回到8时都是是Nullptr,那么返回NULL 即else return NULL;

    本文的求解方法没有利用二叉搜索树的特点,因此效率较低

     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) return NULL;
    14         else if(!q&&!p){
    15             return NULL;
    16         }
    17         else if(root->val == p->val){
    18             return root;
    19         }
    20         else if(q->val == root->val){
    21             return root;
    22         }
    23         else {
    24             TreeNode* l =lowestCommonAncestor(root->left,p,q) ;
    25             TreeNode* r =lowestCommonAncestor(root->right,p,q) ;
    26             if(l && r ) return root;
    27             else if(!l && r) return r;
    28             else if(l && !r) return l;
    29             else return NULL;
    30         }
    31     }
    32 };
  • 相关阅读:
    ORA-28040: No matching authentication protocol
    kettle增量抽取数据--高效抽取方式
    为什么MySQL的索引要使用B+树而不是其它树形结构?比如B树?
    echarts饼图指示线文字换行
    数据库概论
    Java学习笔记
    案例分析
    软件工程作业3
    软件工程作业2
    软件工程作业1
  • 原文地址:https://www.cnblogs.com/onlyac/p/5156307.html
Copyright © 2011-2022 走看看