给定一棵二叉搜索树, 找到该树中两个指定节点的最近公共祖先。

百度百科中最近公共祖先的定义: “对于有根树T的两个结点u、v,最近公共祖先表示一个结点x,满足x是u、v的祖先且x的深度尽可能大。”(一个节点也可以是它自己的祖先)

        _______6______/              \___2__          ___8__/      \        /      \0      _4       7       9/  \3   5

例如, 节点 2 和 8的最近公共祖先是 6。再举个例子,节点 2 和 4 的最近公共祖先是 2, 因为根据定义最近公共祖先节点可以为指定节点自身。

思路:

  • 如果root的值和p,q的值相等,则返回root
  • 如果root的值在p,q的值的中间,那么该root就是p,q的公共祖先

  • 如果root的值大于p和q的值,则在root的左子树中寻找p,q的公共祖先

  • 如果root的值大于p和q的值,则在root的右子树中寻找p,q的公共祖先

     

1 class Solution {
2 public:
3     TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
4         if(root->val == p->val || root->val == q->val) return root;
5         if((root->val > p->val && root->val < q->val)||(root->val < p->val && root->val > q->val)) return root;
6         if(root->val < p->val && root->val < q->val) return lowestCommonAncestor(root->right, p, q);
7         if(root->val > p->val && root->val > q->val) return lowestCommonAncestor(root->left, p,q);
8     }
9 };

转载于:https://www.cnblogs.com/mr-stn/p/8969023.html

leetcode 235. 二叉搜索树的最近公共祖先相关推荐

  1. leetcode 235. 二叉搜索树的最近公共祖先(Java版,树形dp套路)

    题目 原题地址:leetcode 235. 二叉搜索树的最近公共祖先 说明: 所有节点的值都是唯一的. p.q 为不同节点且均存在于给定的二叉搜索树中. 题解 关于 树形dp 套路,可以参考我的另一篇 ...

  2. leetcode —— 235. 二叉搜索树的最近公共祖先

    给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:"对于有根树 T 的两个结点 p.q,最近公共祖先表示为一个结点 x,满足 x 是 p.q 的祖 ...

  3. Leetcode 235.二叉搜索树的最近公共祖先

    Time: 20190907 Type: Easy 题目描述 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:"对于有根树 T 的两个结点 p. ...

  4. leetcode 235. 二叉搜索树的最近公共祖先 思考分析

    目录 题目 思考 迭代法 题目 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:"对于有根树 T 的两个结点 p.q,最近公共祖先表示为一个结点 ...

  5. LeetCode 235. 二叉搜索树的最近公共祖先(递归)

    题目描述 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:"对于有根树 T 的两个结点 p.q,最近公共祖先表示为一个结点 x,满足 x 是 p ...

  6. ( “树” 之 BST) 235. 二叉搜索树的最近公共祖先 ——【Leetcode每日一题】

    二叉查找树(BST):根节点大于等于左子树所有节点,小于等于右子树所有节点. 二叉查找树中序遍历有序. 235. 二叉搜索树的最近公共祖先 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先. ...

  7. 二叉树part8 | ● 235. 二叉搜索树的最近公共祖先 ● 701.二叉搜索树中的插入操作 ● 450.删除二叉搜索树中的节点

    文章目录 235. 二叉搜索树的最近公共祖先 思路 代码 困难 701.二叉搜索树中的插入操作 思路 代码 450.删除二叉搜索树中的节点 思路 代码 困难 今日收获 235. 二叉搜索树的最近公共祖 ...

  8. 【C语言刷LeetCode】235. 二叉搜索树的最近公共祖先(E)

    [ 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:"对于有根树 T 的两个结点 p.q,最近公共祖先表示为一个结点 x,满足 x 是 p.q ...

  9. 【Leetcode | 235】 235. 二叉搜索树的最近公共祖先

    给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:"对于有根树 T 的两个结点 p.q,最近公共祖先表示为一个结点 x,满足 x 是 p.q 的祖 ...

最新文章

  1. json前台后台解析和拼接使用
  2. Java的流读一行丢一行_java – 在少数特定情况下记录丢失的消息
  3. SAP两款CRM产品各方面比较:SAP CRM vs SAP Cloud for Customer
  4. java会被rust替代吗_自从尝了 Rust,Java 突然不香了
  5. 飞鸽传书2007用户需求就是做好需求处理
  6. absolute元素水平居中
  7. SAP License:20个公司绝对不会告诉你的潜规则
  8. 按指定字符分割字符串
  9. 注意力测试软件系统,注意力综合评估训练系统
  10. Bought a new glass in BeiJing Pan Jia Yuan
  11. Android打字机动画,Android 打字机效果
  12. 从一个简单的数学题来说说偷换概念引发的催眠效应
  13. java架构师全套图解,使用/教程/实例
  14. 神经网络基础与顺序神经网络的构建
  15. 云课堂计算机课病毒及安全设置答案,智慧职教云课堂PC端
  16. 高通平台camera客观项测试之色彩偏差白平衡饱和度
  17. 推荐计算机视觉机器视觉行业研究发展规划前景投资市场行情分析报告(附件中为网盘链接,报告持续更新)
  18. 超详细的MySQL入门教程(三)
  19. python3中调用map函数报错map object at 0x000001EF004D97B8
  20. 170604 逆向-CrackMe之013

热门文章

  1. mysql server-存储引擎
  2. linux下前一天时间格式
  3. Redis集群的基本配置
  4. JDBC与mysql同为CST时区导致数据库时间和客户端时间差13或者14小时
  5. 深入探索并发编程之内存屏障:资源控制操作
  6. mysql之触发器详解_学习笔记之MySQL触发器详解
  7. iphone刷基带_iphone7基带坏了怎么办,iphone7基带修复多少钱
  8. 工信部公示国家新型数据中心典型案例名单
  9. 几种常用的配电网络接线
  10. 绿色数据中心保护布线的秘决