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

时间:2024-01-10 01:06:52 标签:  leetcode  深度优先  算法  

题目描述:

在这里插入图片描述

主要思路:

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

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;
    }
};
来源:https://blоg.сsdn.nеt/wеixin_54385104/аrtiсlе/dеtаils/131815851

智能推荐

一、题目大意给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”示例 1:输入:root = [3

标签:祖先  二叉树  Lowest  leetcode  common  

530.二叉搜索树的最小绝对差 给你一个二叉搜索树的根节点 root

标签:# 算法练习  算法  数据结构  java  leetcode  深度优先  

一、题目给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百科中最近公共祖先的定义为:对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。二、示例2.1> 示例 1:

标签:祖先  剑指  二叉树  leetcode  Offer祖先  剑指  二叉树  leetcode  Offer  

「观前提醒」「文章仅供学习和参考,如有问题请在评论区提出」目录前言定义性质求 LCA倍增算法Trajan 算法树链剖分基本概念基本性质具体实现参考资料前言简单的模板整理,只是概括了一下具体的实现方法(说到底是给自己写的),如果看不明白可以去看原视频(讲的很好),链接在参考资料里。

标签:祖先  LCA  

一、题目给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百科中最近公共祖先的定义为:对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。二、示例2.1> 示例 1:

标签:祖先  剑指  leetcode  Offer祖先  剑指  leetcode  Offer  

看本博客前建议先看一下ST算法解决RMQ问题详解

标签:  算法  深度优先  图论  c++  数据结构  

二叉树的最近公共祖先力扣题目链接(opens new window)给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]

标签:递归  遍历  祖先  机制  二叉树  

一、题目大意给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]

标签:祖先  简单  Lowest  common  leetcode  

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

标签:# 算法练习  算法  数据结构  java  深度优先  leetcode  

1.深度与高度二叉树节点的深度:指从根节点到该节点的最长简单路径边的条数或者节点数(取决于深度从0开始还是从1开始)二叉树节点的高度:指从该节点到叶子节点的最长简单路径边的条数后者节点数(取决于高度从0开始还是从1开始)  根节点的高度就是二叉树的最大深度!!!2.二叉树的最大深度  上面已经

标签:最小  深度  二叉树  

二叉树分类很多,其中有满二叉树和完全二叉树,这两种二叉树的效率都很高&#

标签:python  排序算法  算法  动态规划  

猜你喜欢

请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。分析:对称二叉树就是相对于中间的根左右两边对称left.left==right.right&&left.right==right.left/* function TreeNode(x) { this.val = x; this.left = null; this.right = null;}

标签:对称  二叉树  

二叉树 如下图,是一个二叉树的结构图片&#xff1

标签:数据结构  

树与二叉树的特性:(1)树的概念:双亲、孩子和兄弟:结点的子树的根称为该结点的孩子;相应地,该结点称为其子结点的双亲。具有相同双亲的结点互为兄弟结点的度:一个结点的子树的个数记为该结点的度叶子节点:也称为终端结点,指度为0的结点内部结点:指度不为0的结点称为分支节点或非终端节点。除根结点之外,分支结点也称为内部结点结点的层次:根为第一层,根的孩子为第二层,依次类推,若某节点在第i层,则其孩子结点在第i+1层树的高度:一颗树的最大层次数记为树的高度(深度)(2)二叉树的重要特性:1、在二叉树的第i层上最多有2i-1个结点(

标签:二叉树二叉树  

 数据结构~基础2~树【《二叉树、二叉搜索树、AVL树、B树、红黑树》的设计】~二叉

标签:数据结构  b树  前端  

题目链接:https://leetcode.cn/problems/maximum-binary-tree/题目描述:给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建:创建一个根节点,其值为 nums 中的最大值。递归地在最大值 左边 的 子数组前缀上 构建左子树。递归地在最大值 右边

标签:难度  二叉树难度  二叉树  

朋友们、伙计们,我们又见面了,本期来给大家

标签:Leetcode刷题训练营(C语言)  leetcode  算法  c语言  二叉树  

二叉树的遍历一、二叉树的遍历算法可以将二叉树的遍历分为:先序遍历 (根、左、右),中序遍历 (左、根、右),后序遍历 (左、右、根)先序遍历动画 (根、左、右)中序遍历动画 (左、根、右)后序遍历动画 (左、右、根)

标签:遍历  二叉树  

1.二叉树的遍历二叉树主要有两种遍历方式:深度优先遍历:先往深走,遇到叶子节点再往回走。前序遍历(递归法,迭代法) 中左右中序遍历(递归法,迭代法) 左中右后序遍历(递归法,迭代法) 左右中

标签:遍历  二叉树  

相关问题

相关文章

热门文章

推荐文章

相关标签