2 树 2.1 树的定义 一个只有$N 1$条边,且任意两个点连通的图叫做树。通过这样定义的树往往是一棵无根树,而我们通常会任意选定一个根节点使其变成有根树。有根树可以定义“父亲和儿子”的层次关系,这往往有利于构造最优子结构,进行DP和搜索等操作。 特别的,如果在树上任意加上一条边,那么整个树上就会 ...
分类:
其他好文 时间:
2019-08-09 01:17:27
阅读次数:
98
给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉搜索树: root = [6, ...
分类:
编程语言 时间:
2019-08-07 22:58:48
阅读次数:
213
松鼠的新家 题目描述 松鼠的新家是一棵树,前几天刚刚装修了新家,新家有n个房间,并且有n-1根树枝连接,每个房间都可以相互到达,且俩个房间之间的路线都是唯一的。天哪,他居然真的住在“树”上。松鼠想邀请小熊维尼前来参观,并且还指定一份参观指南,他希望维尼能够按照他的指南顺序,先去a1,再去a2,……, ...
分类:
其他好文 时间:
2019-08-03 20:03:09
阅读次数:
95
LCA(最近公共祖先) LCA,Lowest Common Ancetors,即最近公共祖先。 百度百科定义:“对于有根树T的两个结点u、v,最近公共祖先 表示一个结点x,满足x是u、v的祖先且x的深度尽可能大。” 什么是LCA? 对于一些朋友来说百度百科式的介绍不是很友好,我们在这里形象实际地说明 ...
分类:
其他好文 时间:
2019-07-31 13:09:54
阅读次数:
61
树的直径给定一棵树,树中每条边都有一个权值,树中两点之间的距离定义为连接两点的路径边权之和。树中最远的两个节点之间的距离被称 为树的直径,连接这两点的路径被称为树的最长链。后者通常也可称为直径。 树形DP求树的直径(时间复杂度:O(n))设1号节点为根,"N个点N-1条边的无向图"就可以看做“有根树 ...
分类:
其他好文 时间:
2019-07-29 21:46:21
阅读次数:
131
leetcode 236 二叉树的最近公共祖先 参考: "负雪明烛" 题目描述: 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点 ...
分类:
其他好文 时间:
2019-07-27 09:28:46
阅读次数:
91
leetcode 235 二叉搜索树最近公共祖先 题目描述: 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的 ...
分类:
其他好文 时间:
2019-07-26 01:58:42
阅读次数:
118
```cpp 【题目描述】: 有根树在计算机科学工程领域是一个人人熟知的数据结构类型。下面是一个例子。 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}中的某个数 ...
分类:
其他好文 时间:
2019-07-23 15:12:17
阅读次数:
89
【题目描述】: 有根树在计算机科学工程领域是一个人人熟知的数据结构类型。下面是一个例子。 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}中的某个数 ...
分类:
其他好文 时间:
2019-07-23 13:10:45
阅读次数:
98
题目描述: 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉树: root = [ ...
分类:
其他好文 时间:
2019-07-20 15:47:00
阅读次数:
112