寻找二叉树中两个结点的最近公共祖先
寻找二叉树中两个结点的最近公共祖先(这两个结点一定在树中)
对于二叉树中两个结点的最近公共祖先来说 ,这两个结点分别在自己的左子树和右子树中,所以要寻找二叉树中两个结点的最近公共祖先可以:
从根结点开始
- 若两个结点都在左子树 进入根节点左儿子继续判断
- 若两个结点都在右子树 进入根结点右儿子继续判断
- 若一个在左子树 一个在右子树 则这个结点这两个结点的最近公共祖先
Node* FindNode(Node*root,Node*p)//在root为根的树中找p结点
{if (root == NULL)return NULL;if (root == p)return root;if (FindNode(root->left, p))return FindNode(root->left, p);return FindNode(root->right, p);
}
Node* LowestCommonAncestor(Node*root, Node*p, Node*q)
{if (root == p || root == q)return root;Node*left = FindNode(root->left, p);Node*right = FindNode(root->left, q);if (left&&right)//都在左侧LowestCommonAncestor(root->left, p, q);else if (!left&&!right)//都在右侧LowestCommonAncestor(root->right, p, q);elsereturn root;
}
寻找二叉树中两个结点的最近公共祖先相关推荐
- 二叉树找到两个结点的最近公共祖先
面试题68 - I. 二叉搜索树的最近公共祖先 https://leetcode-cn.com/problems/er-cha-sou-suo-shu-de-zui-jin-gong-gong-zu- ...
- 树如何找共同祖先_如何找到任何二叉树中两个节点的最低公共祖先?
小编典典 尼克·约翰逊是正确的,一个一个O(n)的时间复杂度算法是最好的,如果你没有父指针,你可以做.)对于算法的一个简单的递归版本中看到代码金丁的职务)它运行在O(n)的时间. 但是请记住,如果您的 ...
- 二叉树中两个结点的最远距离
二叉树是我们熟悉的数据结构之一,它的面试题也有很多,今天我们就来看下二叉树中两个结点的最远距离. 分析: 第一步: 第二步: 在分析完之后,我们就可以写代码了 //方法一:求二叉树的左右子树的高度之和 ...
- 寻找树中两个结点的最低公共祖先
寻找树中两个结点的最低公共祖先 Q:在树中寻找两个结点的最低公共祖先,是什么意思呢? A:树是由根节点衍生左右孩子继续衍生左右孩子的左右孩子.所以呢树中的两个结点是一定拥有最低公共祖先(这两个结点Q: ...
- 求一颗二叉树中两个节点的最低公共父节点
题目:求一棵二叉树中两个节点的最低公共父节点 思路:递归 和 非递归 public static TreeNode getLastCommonParentRec(TreeNode root, Tree ...
- 树中两个结点的最低公共祖先
题目描述: 给定一棵树,同时给出树中的两个结点,求它们的最低公共祖先. 输入: 输入可能包含多个测试样例. 对于每个测试案例,输入的第一行为一个数n(0<n<1000),代表测试样例的个数 ...
- 50:树中两个结点的最低公共祖先
题目:求树中两个结点的最低公共祖先,此树不是二叉树,并且没有指向父节点的指针. 树的结点定义 private static class TreeNode {int val;List<TreeNo ...
- 程序员面试100题之十六:二叉树中两个节点的最近公共父节点(最低的二叉树共同祖先)
这个问题可以分为三种情况来考虑: 情况一:root未知,但是每个节点都有parent指针 此时可以分别从两个节点开始,沿着parent指针走向根节点,得到两个链表,然后求两个链表的第一个公共节点,这个 ...
- 求二叉树两个结点的最近公共祖先
题目描述: 一颗二叉树按顺序存储结构进行存储,设计一个算法,求编号i和j的最近公共祖先 思路: 已知:二叉树.顺序存储 空的结点用"#"表示 如果i,j所在位置的结点数据不是&qu ...
最新文章
- Spring Autowired 注入失败总是Null
- Ubuntu磁盘分区以及双系统启动顺序修改
- python绘制三维地形_【学习笔记】Python科学计算三维可视化(黄天羽、嵩天)(学习中。。)|python基础教程|python入门|python教程...
- 古迪纳夫等3人获得诺贝尔化学奖 确立锂离子电池构成
- JAVA延迟执行(thread方式和timer方式)
- 从零学ELK系列(七):Centos安装Filebeat(超详细图文教程)
- 力扣-1925 统计平方和三元组的数目
- VMware新建虚拟机(CentOS)步骤详解
- vm14安装mac10教程(亲测;转载)
- Html实现QQ音乐首页(响应式)
- matlab求解一元四次函数,excel数据函数参数是四个吗|求一个简单的一元四次函数的最大值...
- pikachu漏洞搭建平台
- Dingo + Laravel + JWT + Entrust + memcache 实现API设计
- 中国锂电池粘结剂行业发展现状分析,主要为PVDF「图」
- joycon手柄拆解_爱活电刑室 | 撬开海拉尔的大门! 任天堂Switch全拆解
- docker和kvm的区别,简洁大白话篇,两者的优势对比
- 程序员的自我涵养,写好代码的实战经历分享
- 爱福窝在线装修设计软件测评
- Pygame实战:利用Python实现智能五子棋,实现之后发现我玩不赢它。
- 2020上海泛微JAVA校招面经