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

        _______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;

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

 /**
* 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) {
if(!root) return NULL;
else if(!q&&!p){
return NULL;
}
else if(root->val == p->val){
return root;
}
else if(q->val == root->val){
return root;
}
else {
TreeNode* l =lowestCommonAncestor(root->left,p,q) ;
TreeNode* r =lowestCommonAncestor(root->right,p,q) ;
if(l && r ) return root;
else if(!l && r) return r;
else if(l && !r) return l;
else return NULL;
}
}
};

最新文章

  1. 简析Geoserver中获取图层列表以及各图层描述信息的三种方法
  2. EF获取一个或者多个字段
  3. 径向基函数(RBF)神经网络
  4. django --fields.E304 错误解决方案
  5. C# 获取本机IP地址以及转换字符串
  6. 【工具篇】利用DBExportDoc V1.0 For MySQL自动生成数据库表结构文档
  7. apue——无缓冲读写操作
  8. datatables 行与列的数据获取
  9. 高并发连接导致打开文件过多:java.io.IOException: Too many open files 解决方法
  10. MongoDB的“not master and slaveok=false”错误解决
  11. 20135316王剑桥Linux内核学习笔记第三周
  12. Pinpoint - 应用性能管理(APM)平台实践之部署篇
  13. 关于使用coreseek并为其做分页的介绍(转)
  14. mysql日期和字符相互转换
  15. JS判断当前是否是IE浏览器,并返回时IE几?
  16. LeetCode解题报告—— Best Time to Buy and Sell Stock
  17. IOS 开发之--获取真机的deviceToeken
  18. K-modes聚类算法MATLAB
  19. iOS 使用node js 搭建简单的本地服务器
  20. java代码Calendar类

热门文章

  1. iOS页面间传值的方式(Delegate/NSNotification/Block/NSUserDefault/单例)
  2. [刘阳Java]_Java程序员的成长路线_第3讲
  3. 学习Linux所需软件
  4. DL4J (DeepLearning for java)
  5. 《深入理解Spark:核心思想与源码分析》正式出版上市
  6. Nginx 常用伪静态配置
  7. java里的分支语句--程序运行流程的分类(顺序结构,分支结构,循环结构)
  8. halcon摄像机标定
  9. mysql 语句解释执行顺序
  10. PHP日期时间处理