leecode第二百三十六题(二叉树的最近公共祖先)


/**
* 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:
void serch_patch(TreeNode* root, TreeNode* node,vector<TreeNode*> &path,bool &is_search)
{
path.push_back(root);
if(root->val==node->val)//要是找到路径了
{
is_search=true;//标志修改,然后返回
return;
} if(root->left!=NULL)
serch_patch(root->left,node,path,is_search);
if(is_search)//在左边找到了,就不用在右面找了
return; if(root->right!=NULL)
serch_patch(root->right,node,path,is_search);
if(is_search)//在右面找到了,就不用删除根节点了
return;
path.pop_back();
} TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
bool is_flag=false;
vector<TreeNode*> path_p;
serch_patch(root,p,path_p,is_flag);//寻找root到p的路径
is_flag=false;
vector<TreeNode*> path_q;
serch_patch(root,q,path_q,is_flag);//寻找root到q的路径 int len=min(path_p.size(),path_q.size());
TreeNode* res=root;
for(int i=;i<len;i++)//比较当前路径,若在最小长度下找到一致的就记住,即便一致都相等,也可以用最后一个
{
if(path_p[i]==path_q[i])
res=path_p[i];
}
return res;//找不到就返回root,无所谓的
}
};
分析:
一不是二叉搜索树,二没有父节点信息,只想到用路径去判断了。
leecode第二百三十六题(二叉树的最近公共祖先)的更多相关文章
- leecode第一百三十六题(只出现一次的数字)
class Solution { public: int singleNumber(vector<int>& nums) { int len=nums.size(); ; ;i&l ...
- leecode第二百三十八题(除自身以外数组的乘积)
class Solution { public: vector<int> productExceptSelf(vector<int>& nums) { int len= ...
- leecode第二百三十五题(二叉搜索树的最近公共祖先)
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode ...
- leecode第二百三十题(二叉搜索树中第K小的元素)
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode ...
- 第二百三十六节,Bootstrap辅组类和响应式工具
Bootstrap辅组类和响应式工具 学习要点: 1.辅组类 2.响应式工具 本节课我们主要学习一下 Bootstrap 的辅组类和响应式工具,辅助类提供了一组类来辅 组页面设计,而响应式工具则利用媒 ...
- 第三百三十六节,web爬虫讲解2—urllib库中使用xpath表达式—BeautifulSoup基础
第三百三十六节,web爬虫讲解2—urllib库中使用xpath表达式—BeautifulSoup基础 在urllib中,我们一样可以使用xpath表达式进行信息提取,此时,你需要首先安装lxml模块 ...
- leecode第二百三十七题(删除链表中的节点)
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode ...
- leecode第二百三十一题(2的幂)
class Solution { public: bool isPowerOfTwo(int n) { bool is_flag=false; ) { ==)//如果为1,看是不是第一个1 { if( ...
- leecode第一百二十四题(二叉树中的最大路径和)
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode ...
随机推荐
- Keras RetinaNet github项目
https://github.com/fizyr/keras-retinanet 根据此网站的方法,利用Pascal VOC 2007数据集开始训练,出现error: D:\JupyterWorkSp ...
- cacheline基本理论
一.cacheline 1.cache:解决cpu频率与内存访问之间速度差距越来越大的问题 2.cacheline:cpu cache的最小单位,主流为64B 3.指导:访问数组数据在同一个cache ...
- 深入理解Java虚拟机7-chap10-11-斗者4星
一.编译期优化 1.JIT编译器在运行期的优化过程对程序运行很重要,而编译期优化过程对于程序编码关系更密切 2.Javac编译器编译过程 解析与填充符号表过程:词法语法分析.填充符号表 插入式注解处理 ...
- #WEB安全基础 : HTTP协议 | 0x15 HTTPS:给你点颜色看看
"你好,我是HTTPS,我只是披了个外壳,我还是原来的HTTP." 这是HTTPS叫我转达给你的话. HTTPS本质上就是HTTP,只不过加了点调料.它比HTTP更安全,使用了加密 ...
- 北京大学Cousera学习笔记--4-计算导论与C语言基础--计算机的基本原理-程序运行的基本原理
已知:电路能完成计算 怎么计算:设计好很多个原子电路,需要的时候就把他们临时组装在一起--ENIAC 升级:冯诺依曼-EDVAC(现在的计算机都是) 1.通过某种命令来控制计算机.让计算机按照这种命令 ...
- ubuntu16.04 backup and restore
http://blog.csdn.net/qq_35523593/article/details/78545530
- xcodebuild 错误:unknown error -1=ffffffffffffffff
1.security list-keychains 2.security unlock-keychains -p "your password" "your login ...
- redis 有序集合(zset)函数
redis 有序集合(zset)函数 zAdd 命令/方法/函数 Adds the specified member with a given score to the sorted set stor ...
- springboot使用@data注解,减少不必要代码
一.idea安装lombok插件 二.重启idea 三.添加maven依赖 <dependency> <groupId>org.projectlombok</groupI ...
- 分享一个基于ssm框架下的webService接口开发
首先肯定是导入相关jar包 cxf-core-3.1.9.jar cxf-rt-bindings-soap-3.1.9.jar cxf-rt-bindings-xml-3.1.9.jar cxf-rt ...