/**
* 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第二百三十六题(二叉树的最近公共祖先)的更多相关文章

  1. leecode第一百三十六题(只出现一次的数字)

    class Solution { public: int singleNumber(vector<int>& nums) { int len=nums.size(); ; ;i&l ...

  2. leecode第二百三十八题(除自身以外数组的乘积)

    class Solution { public: vector<int> productExceptSelf(vector<int>& nums) { int len= ...

  3. leecode第二百三十五题(二叉搜索树的最近公共祖先)

    /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode ...

  4. leecode第二百三十题(二叉搜索树中第K小的元素)

    /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode ...

  5. 第二百三十六节,Bootstrap辅组类和响应式工具

    Bootstrap辅组类和响应式工具 学习要点: 1.辅组类 2.响应式工具 本节课我们主要学习一下 Bootstrap 的辅组类和响应式工具,辅助类提供了一组类来辅 组页面设计,而响应式工具则利用媒 ...

  6. 第三百三十六节,web爬虫讲解2—urllib库中使用xpath表达式—BeautifulSoup基础

    第三百三十六节,web爬虫讲解2—urllib库中使用xpath表达式—BeautifulSoup基础 在urllib中,我们一样可以使用xpath表达式进行信息提取,此时,你需要首先安装lxml模块 ...

  7. leecode第二百三十七题(删除链表中的节点)

    /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode ...

  8. leecode第二百三十一题(2的幂)

    class Solution { public: bool isPowerOfTwo(int n) { bool is_flag=false; ) { ==)//如果为1,看是不是第一个1 { if( ...

  9. leecode第一百二十四题(二叉树中的最大路径和)

    /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode ...

随机推荐

  1. Oracle 12C执行root.sh CLSRSC-119 CRS-8503 CLSRSC-366

    1.环境 OS:SUSE Linux Enterprise 12 SP3 X86_64 (Kernel: 4.4.162-94.69.2) DB:12.2.0.1 两节点RAC 参考文档:在 SLES ...

  2. ionic3 生命周期 之 ionViewWillLeave 坑

    ionic3  生命周期 ionViewWillLeave,当页面关闭离开时 执行的事件, 从页面根部跳转 this.appCtrl.getRootNav().setRoot() 方法离开时是 不执行 ...

  3. Oracle DataGuard 11g 双机实验

    |操作系统 | release 6.7 | release 6.7 | |主机名 | stuaapp01 | stuaapp02 ||IP | 192.168.20.234 | 192.168.20. ...

  4. Qt QComBox 文本框输入itemText && 文本框查找item && 本文框添加Item &&设置显示Item数量

    comBox的几种状态图如下:   图1:ui->comboBox->setEditable(true); 图2:ui->comboBox->setEditable(false ...

  5. openFileDialog的Filter属性设置

    OpenFileDialog对话框的Filter属性说明: 首先说明一个示例,分析一下Filter属性的构成:“ Excel文件|*.xls ”,前面的“Excel文件”成为标签,是一个可读的字符串, ...

  6. android 开发设计模式---Builder模式

    我们通过一个例子来引出Builder模式.假设有一个Person类,我们通过该Person类来构建一大批人,这个Person类里有很多属性,最常见的比如name,age,weight,height等等 ...

  7. C博客作业04--数组

    1. 本章学习总结 1.1 思维导图 1.2 本章学习体会及代码量学习体会 1.2.1 学习体会 这几周学习了数组,一维数组,二维数组,字符数组,前一个题集还没做完,后一个题集就又发布了,当场去世,可 ...

  8. js encode方法

    js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent 1 ...

  9. 使用session和cookie实现用户登录:一个登录页面,一个servlet,一个登录成功页面

    文件目录 1.登录页面 <%@ page language="java" contentType="text/html; charset=utf-8" p ...

  10. 服务器硬件与linux系统

    服务器的特性: 高速度的CPU运算能力 长时间的可靠运行 强大的I/O外部数据吞吐能力 服务器通常具有更高的性能,效率,高可靠,高可用性,以及更好的扩展性. 服务器的分类 (1)服务器按外形分类 塔式 ...