二叉树寻找祖先C语言,二叉树寻找最近公共祖先节点
方法一:递归
1.思路
(1)定义fx表示x节点的子树中是否包含p或者q节点,如果包含为true,否则为false。那么符合条件的最近公共祖先节点一定满足下面的条件:
(flson && frson) || ((x = p || x = q) && (flson || frson))
其中flson和frson分别表示左子树含有p或q节点。
(2)若想找到最近公共祖先节点,必须使用深度遍历实现
2.实现var lowestCommonAncestor = function(root, p, q) {
if(!root) return null; //如果根节点为空的话,直接返回null
let result; //定义返回值
const dfs = (root, p, q) => {
//先定义深度遍历递归的条件
if(!root) return false;
let lson = dfs(root.left, p, q); //先从左子树开始深度遍历
let rson = dfs(root.right, p, q); //再从右子树开始深度遍历
if((lson && rson) || ((root === q || root === p) && (lson || rson))) {
//如果符合该条件的话,就是找到了最近的公共祖先节点
result = root;
}
//只要有一项符合要求的话,就返回true
return lson || rson || root === p || root === q;
}
dfs(root, p, q);
return result;
};
二叉树寻找祖先C语言,二叉树寻找最近公共祖先节点相关推荐
- 寻找树中两个结点的最低公共祖先
寻找树中两个结点的最低公共祖先 Q:在树中寻找两个结点的最低公共祖先,是什么意思呢? A:树是由根节点衍生左右孩子继续衍生左右孩子的左右孩子.所以呢树中的两个结点是一定拥有最低公共祖先(这两个结点Q: ...
- 2022-05-22:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p
2022-05-22:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:"对于有根树 T 的两个节点 p.q,最近公共祖先表示为一个节点 x,满足 x ...
- 二叉树中找两个结点的最近公共祖先结点
一.搜索二叉树:第一变种是二叉树是一种特殊的二叉树:查找二叉树.也就是树是排序过的,位于左子树上的结点都比父结点小,而位于右子树的结点都比父结点大.我们只需要从根结点开始和两个结点进行比较.如果当前结 ...
- 二叉树part8 | ● 235. 二叉搜索树的最近公共祖先 ● 701.二叉搜索树中的插入操作 ● 450.删除二叉搜索树中的节点
文章目录 235. 二叉搜索树的最近公共祖先 思路 代码 困难 701.二叉搜索树中的插入操作 思路 代码 450.删除二叉搜索树中的节点 思路 代码 困难 今日收获 235. 二叉搜索树的最近公共祖 ...
- 二叉树广度遍历 c语言,二叉树深度优先遍历和广度优先遍历
对于一颗二叉树,深度优先搜索(Depth First Search)是沿着树的深度遍历树的节点,尽可能深的搜索树的分支.以上面二叉树为例,深度优先搜索的顺序 为:ABDECFG.怎么实现这个顺序呢 ? ...
- 数据结构-寻找二叉树两节点的最近公共祖先(Java)
寻找最近公共祖先 题目 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:"对于有根树 T 的两个节点 p.q,最近公共祖先表示为一个节点 x,满足 ...
- leetcode 236. 二叉树的最近公共祖先 递归解法 c语言
如题: 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先.百度百科中最近公共祖先的定义为:"对于有根树 T 的两个结点 p.q,最近公共祖先表示为一个结点 x, 满足 x 是 p.q ...
- C语言二叉树的lowest common ancestor最低公共祖先(附完整源码)
C语言二叉树的lowest common ancestor最低公共祖先 C语言二叉树的lowest common ancestor最低公共祖先完整源码(定义,实现,main函数测试) C语言二叉树的l ...
- LeetCode实战:二叉树的最近公共祖先
背景 为什么你要加入一个技术团队? 如何加入 LSGO 软件技术团队? 我是如何组织"算法刻意练习活动"的? 为什么要求团队的学生们写技术Blog 题目英文 Given a bin ...
最新文章
- 常用Maven收集以及Maven技巧
- input blur获取不到当前值_解决 Laravel JWT 多表认证时获取不到当前认证用户的问题...
- 月读の自动读取 根据注释解析列名和字典
- VC编写的程序不能在其他机器上运行的解决方案(续)
- 无忧考吧python编译环境不存在_python:flake8找不到不存在的方法
- 【计蒜客信息学模拟赛1月月赛 - B】蒜头套圈圈(贪心,前缀最大值)
- linux调用堆栈函数,使用 backtrace 获得 Linux 函数调用栈
- 对话张潼 | 腾讯AI Lab周岁:规模飙至370人,要做后来居上的终结者
- 大数据可视化该如何实现
- php类微博源码,类微博功能设计
- Mybatis if test中字符串比较
- 计算机网络课设--小型企业网络的规划与设计
- 教你如何选择弱电工程中使用的交换机?
- 在开放环境的步态识别:一个基准(三)
- frame buffer驱动
- 以太网详解(二)-物理介质(100base-TX等)介绍
- 盒式交换机S5750系列指示灯含义
- 企业微信如何自动同步外部客户信息到CRM系统
- 矩阵相乘(Python)
- 决策模型(一):不确定型决策法