当前位置: 首页 > news >正文

LeetCode -- 查找最小公共祖先


在一棵二叉树中, 查找两个节点的最近的公共祖先。
由于本题没有涉及到批量查询,因此考虑一般解法即可,如果涉及批量,可考虑Tarjan算法。


思路:
1. 先序遍历
2. 判断查找的两节点和当前节点的关系
3. 根据是否为空的情况返回不同节点


要注意的地方是判断节点是否相等,本题使用了C++语言,直接判断指针本身了




/**
 * 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 == NULL)  
        return NULL;  
    if(root== p || root==q)  
        return root;  


    TreeNode* left = lowestCommonAncestor(root->left, p, q);  
    TreeNode* right = lowestCommonAncestor(root->right, p, q);  


    if(left != NULL && right != NULL)  
        return root;  
    else if(left != NULL)  
        return left;  
    else if (right != NULL)  
        return right;  
    else   
        return NULL;  
    }
};


相关文章:

  • 8位程序员对Oracle收购Sun的担忧与期待
  • LeetCode -- 顺时针旋转图片90度
  • LeetCode -- Path Sum ||
  • 35岁IT“老人”的随笔
  • LeetCode -- Decode Ways
  • 嵌入式Linux系统中的GUI系统的研究与移植
  • LeetCode -- Substring with Concatenation of All Words
  • asp.net MVC5 sitemap 的使用
  • CentOS 5.x 預設啟動的服務簡易說明
  • Leet -- Remove Duplicates from Sorted Array
  • LeetCode -- Best Time to Buy and Sell Stock II
  • 海闊天空 信樂團
  • Contains Duplicate III
  • LeetCode -- Combination Sum
  • MySQL添加用户
  • 2017届校招提前批面试回顾
  • C# 免费离线人脸识别 2.0 Demo
  • Flex布局到底解决了什么问题
  • HashMap ConcurrentHashMap
  • Java超时控制的实现
  • MySQL数据库运维之数据恢复
  • node学习系列之简单文件上传
  • Object.assign方法不能实现深复制
  • PAT A1017 优先队列
  • Redis的resp协议
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • Vue.js源码(2):初探List Rendering
  • vue-cli在webpack的配置文件探究
  • Web标准制定过程
  • Zsh 开发指南(第十四篇 文件读写)
  • 缓存与缓冲
  • 基于组件的设计工作流与界面抽象
  • 聊聊flink的BlobWriter
  • 使用SAX解析XML
  • 提醒我喝水chrome插件开发指南
  • 通过几道题目学习二叉搜索树
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • "无招胜有招"nbsp;史上最全的互…
  • #define 用法
  • #pragam once 和 #ifndef 预编译头
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (Git) gitignore基础使用
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (SpringBoot)第二章:Spring创建和使用
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • (转) 深度模型优化性能 调参
  • (转)h264中avc和flv数据的解析
  • .gitattributes 文件