函数功能: 1、如果p q都存在,返回他们的公共祖先 2、只存在一个,那就返回存在的一个 3、都不存在,返回NULL 递归左右子树,左子树的结果为left1,右子树结果为right1 left1空代表结果(公共祖先)在right1,反之亦然。 如果都非空,说明p q在左右两边,此时要返回根结点。 否 ...
分类:
其他好文 时间:
2020-03-03 11:14:42
阅读次数:
71
Leetcode: "235. 二叉搜索树的最近公共祖先" Leetcode: "235. 二叉搜索树的最近公共祖先" Talk is cheap . Show me the code . ...
分类:
其他好文 时间:
2020-02-28 19:05:14
阅读次数:
71
题意给定一个二叉树,找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树T的两个结点p、q,最近公共祖先表示为一个结点x,满足x是p、q的祖先且x的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树:root=[3,5,1,6,2,0,8,null,null,7,4]示例1:输入:root=[3,5,1,6,2,0,8,null,null,7,4],
分类:
其他好文 时间:
2020-02-20 09:47:21
阅读次数:
60
题意 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉树: root = [3,5 ...
分类:
其他好文 时间:
2020-02-19 14:48:22
阅读次数:
49
3.数组中重复数字:每个位置放置数字与下标对应相等 O(n) 4.二维数组中的查找:左下角开始比较 O(m+n) (微软) 5.替换空格:python直接替换 6.从尾到头打印链表:python insert函数 xxx7.重建二叉树:前序中序遍历特点递归 xxx8.二叉树的下一个节点:根据中序遍历 ...
分类:
其他好文 时间:
2020-02-18 14:36:50
阅读次数:
64
```cpp const int MAX = 100000; vector G[MAXN + 5]; int dep[MAXN + 5], fa[MAXN + 5][20 + 1]; void dfs(int u, int p) { dep[u] = depth[p] + 1; fa[u][0] =... ...
分类:
编程语言 时间:
2020-02-16 12:55:01
阅读次数:
72
LCA(least common ancestors)最近公共祖先 指的就是对于一棵有根树,若结点z既是x的祖先,也是y的祖先(不要告诉我你不知道什么是祖先),那么z就是结点x和y的最近公共祖先。 定义到此。 那么怎么求LCA? 对于朴素思想,就是我要一步一步往上爬。。一步一步走。先把结点x和y整到 ...
分类:
其他好文 时间:
2020-02-15 19:20:38
阅读次数:
91
一个思路不难,但是实现起来有点毒瘤的题。 显然题目给出的是基环树(内向树)森林。 把每一个基环抠出来。 大力分类讨论: 1. 若 $a, b$ 不在一个联通量里,显然是 $ 1, 1$ 2. 若 $a, b$ 在同一颗子树内,他们聚合的点显然是最近公共祖先,因为如果再往上走,2的条件就不满足。 3. ...
1 """ 2 Given a binary tree, find the lowest common ancestor (LCA) of two given nodes in the tree. 3 According to the definition of LCA on Wikipedia: ...
分类:
其他好文 时间:
2020-02-13 22:33:56
阅读次数:
67
给定一棵二叉搜索树的先序遍历序列,要求你找出任意两结点的最近公共祖先结点(简称 LCA)。 输入格式: 输入的第一行给出两个正整数:待查询的结点对数 M(≤ 1 000)和二叉搜索树中结点个数 N(≤ 10 000)。随后一行给出 N 个不同的整数,为二叉搜索树的先序遍历序列。最后 M 行,每行给出 ...
分类:
其他好文 时间:
2020-02-13 14:59:07
阅读次数:
185