题目 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉搜索树: root = ...
分类:
其他好文 时间:
2020-12-18 12:25:53
阅读次数:
3
class Solution { private TreeNode res = null; public boolean dfs(TreeNode root,TreeNode p,TreeNode q){ if(root==null){ return false; } boolean lchild ...
分类:
其他好文 时间:
2020-11-11 16:27:40
阅读次数:
8
题目描述 分析 方法一(线段树) 线段树维护的是以当前节点为左端点的区间的贡献 而区间的右端点则会从 $1$ 到 \(n\) 逐渐右移 当我们把右端点从 \(i-1\) 的位置扩展到 \(i\) 的位置时 如果原先区间的最近公共祖先到根节点的路径中经过 \(a[i-1]\) 和 \(a[i]\) 的 ...
分类:
其他好文 时间:
2020-10-07 21:33:49
阅读次数:
17
二叉搜索树的性质:(1)root为空;(2)或者root左子树中所有元素都小于root->val,root右子树中所有元素都大于root->val, 且root的左右子树也是二叉搜索树。 所以要找两个节点的最近公共祖先,有三种情况: (1)p,q都在root的左子树中,则我们到root的左子树去寻找 ...
分类:
其他好文 时间:
2020-08-26 18:35:35
阅读次数:
47
236. 二叉树的最近公共祖先 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉树 ...
分类:
其他好文 时间:
2020-08-20 18:21:29
阅读次数:
50
【题目描述】: 有根树在计算机科学工程领域是一个人人熟知的数据结构类型。下面是一个例子。 8->(1,4,5);1->(13,14);4->(6,10);5->(9);6->(7,15);10->(2,11,16);16->(3,12); 在这个图中,每个点都是由{1, 2,...,16}中的某个数 ...
分类:
其他好文 时间:
2020-08-18 13:33:47
阅读次数:
57
LCA之倍增简单讲解 LCA代指Least Common Ancestor,翻译过来就是最近公共祖先 如下图,x和y的最近公共祖先就是二号节点 那么,如何来求这个最近公共祖先呢? 1.暴力算法 让x和y一步一步向上爬,一直爬到相遇为止 x: 4->3->2 y: 6->5->2 可是这样暴力实在是太 ...
分类:
其他好文 时间:
2020-07-30 22:20:01
阅读次数:
94
思路:后序遍历, 分情况讨论: 1、两个节点在根的左侧 2、两个节点在根的右侧 3、两个节点在根的左右两侧 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * ...
分类:
其他好文 时间:
2020-07-23 22:15:14
阅读次数:
77
\(Mancity\) \(Description\) \(Input\) \(Output\) \(Sample Input\) 8 3 6 1 2 1 1 3 2 4 2 5 1 6 1 6 2 4 1 3 3 2 4 4 2 2 5 8 2 \(Sample Output\) 1 0 2 2 ...
分类:
其他好文 时间:
2020-07-20 13:14:51
阅读次数:
67
[编程题] lc:236. 二叉树的最近公共祖先 题目描述 输入输出例子 思路 使用后续遍历的思想,根据找到了左和右的情况,进行相应的返回结果。 Java代码 /** * Definition for a binary tree node. * public class TreeNode { * i ...
分类:
其他好文 时间:
2020-07-19 00:39:06
阅读次数:
85