Leetcode 235 Lowest Common Ancestor of a Binary Search Tree 二叉树
2024-10-17 22:15:29
给定一个二叉搜索树的两个节点,找出他们的最近公共祖先,如,
_______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;
}
}
};
最新文章
- 简析Geoserver中获取图层列表以及各图层描述信息的三种方法
- EF获取一个或者多个字段
- 径向基函数(RBF)神经网络
- django --fields.E304 错误解决方案
- C# 获取本机IP地址以及转换字符串
- 【工具篇】利用DBExportDoc V1.0 For MySQL自动生成数据库表结构文档
- apue——无缓冲读写操作
- datatables 行与列的数据获取
- 高并发连接导致打开文件过多:java.io.IOException: Too many open files 解决方法
- MongoDB的“not master and slaveok=false”错误解决
- 20135316王剑桥Linux内核学习笔记第三周
- Pinpoint - 应用性能管理(APM)平台实践之部署篇
- 关于使用coreseek并为其做分页的介绍(转)
- mysql日期和字符相互转换
- JS判断当前是否是IE浏览器,并返回时IE几?
- LeetCode解题报告—— Best Time to Buy and Sell Stock
- IOS 开发之--获取真机的deviceToeken
- K-modes聚类算法MATLAB
- iOS 使用node js 搭建简单的本地服务器
- java代码Calendar类
热门文章
- iOS页面间传值的方式(Delegate/NSNotification/Block/NSUserDefault/单例)
- [刘阳Java]_Java程序员的成长路线_第3讲
- 学习Linux所需软件
- DL4J (DeepLearning for java)
- 《深入理解Spark:核心思想与源码分析》正式出版上市
- Nginx 常用伪静态配置
- java里的分支语句--程序运行流程的分类(顺序结构,分支结构,循环结构)
- halcon摄像机标定
- mysql 语句解释执行顺序
- PHP日期时间处理