236. 二叉树的最近公共祖先

题目描述:

主要思路:

利用dfs遍历树,依次判断节点是否为公共祖先节点。

cpp 复制代码
class Solution {
public:
    TreeNode* ans;
    bool dfs(TreeNode* root, TreeNode* p, TreeNode* q)
    {
        if(!root)
            return false;
        bool l=dfs(root->left,p,q);
        bool r=dfs(root->right,p,q);
        if(l&&r||((l||r)&&(root->val==p->val||root->val==q->val)))
            ans=root;
        if(l|r|root->val==p->val|root->val==q->val)
            return true;
        else
            return false;
    }
    TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
        dfs(root,p,q);
        return ans;
    }
};
相关推荐
2401_896008191 小时前
GCC 使用说明
前端·javascript·算法
1白天的黑夜11 小时前
动态规划-LCR 089.打家劫舍-力扣(LeetCode)
c++·算法·leetcode·动态规划
yy鹈鹕灌顶1 小时前
LeetCode 字符串类题目解析与 Java 实现指南(深度优化版)
java·开发语言·算法·leetcode
摆烂仙君2 小时前
怎么样进行定性分析
人工智能·算法·机器学习·数学建模
codists3 小时前
《算法导论(第4版)》阅读笔记:p86-p90
算法
ShineSpark3 小时前
C++面试3——const关键字的核心概念、典型场景和易错陷阱
c++·算法·面试
智驱力人工智能6 小时前
AI移动监测:仓储环境安全的“全天候守护者”
人工智能·算法·安全·边缘计算·行为识别·移动监测·动物检测
代码小将8 小时前
力扣992做题笔记
算法·leetcode
编程绿豆侠8 小时前
力扣HOT100之二叉树:199. 二叉树的右视图
算法·leetcode·职场和发展
飞川撸码9 小时前
【LeetCode 热题100】17:电话号码的字母组合(详细解析)(Go语言版)
算法·leetcode·golang·dfs