
树
文章平均质量分 75
Selvaggia
这个作者很懒,什么都没留下…
展开
-
旅游规划(树的直径上所有节点)
【代码】树的直径上所有节点。原创 2023-04-01 23:22:41 · 290 阅读 · 0 评论 -
线段树板子
线段树板子单点修改,区间查询//#include <bits/stdc++.h>#include <iostream> #include <stdio.h>using namespace std;//#define int long longconst int N=2e5+5;int n,m;int w[N];struct node{//线段树要维护的信息 int l,r; int v;//该段的最大值 }tr[N*4];void pushu原创 2022-04-23 13:33:28 · 591 阅读 · 0 评论 -
根据前序遍历和中序遍历找后续遍历、层次遍历
这里写目录标题中序+前序 ——> 后序法一:将数组传参法二:将中序下标传参,前序的root传参(前序遍历中总能找到 根节点、左子树根节点、右子树根节点)中序+前序 ——> 层次遍历中序+前序 ——> 后序法一:将数组传参由中序遍历和前序遍历得到后续遍历(镜像翻转或不翻转)这是之前的老做法,把数组作为参数,每次传具体某一段数组的首地址麻烦的地方在于,有时候找不准某段数组的首地址以下标0开始的数组,str【i】为首的数组段,地址是str+i以下标1开始的数组,str【i】为首的数原创 2022-04-13 16:59:08 · 934 阅读 · 1 评论 -
7-17 根据后序和中序遍历输出先序遍历 (25 分)
7-17 根据后序和中序遍历输出先序遍历 (25 分)不建树,直接输出#include<iostream>#include<string.h>using namespace std;int hs[35];int zs[35];int n;//int flag=1; void print(int str1[],int str2[],int len){ if(len==0)return ;// else if(len==2){//先输出后序遍历最后一个正着这个规律原创 2022-01-27 14:41:10 · 620 阅读 · 0 评论 -
(无向)树上的逃和追 ,(有向)树才有所谓深度,(无向)树只有距离最远的节点
(无向)树上的逃和追本来想先找到距离x最远的节点y,再用Dijkstra求1,y的最短距离∗2本来想先找到距离x最远的节点y,再用Dijkstra求1,y的最短距离*2本来想先找到距离x最远的节点y,再用Dijkstra求1,y的最短距离∗2真的是昏了头,树中两个已知节点之间只有一条路,距离是固定的,又不是图真的是昏了头,树中两个已知节点之间只有一条路,距离是固定的,又不是图真的是昏了头,树中两个已知节点之间只有一条路,距离是固定的,又不是图关于非根节点的节点的深度(错误预警)距离x最远的叶子节点,原创 2022-04-12 17:49:51 · 395 阅读 · 0 评论 -
树的直径 两次dfs(起点到其余各点最大距离)、树形dp(各点到其子树叶子节点的最大距离)
树的直径定义法一、两次dfs、bfs思想证明优点缺点实现代码法二、树形dp思想证明优点缺点实现代码题目集参考定义直径 : 在圆上两点(不相交)之间最远的距离就是我们通常所说的直径。树的直径 : 树上最远的两个节点之间的距离就被称为树的直径,连接这两点的路径被称为树的最长链(一开始,下意识地以为是,找到某个节点到它子树中叶子节点的最大距离,显然不是)法一、两次dfs、bfs思想先从任意一点P出发,找离它最远的点Q,再从点Q出发,找离它最远的点W,W到Q的距离就是是的直径。证明①若P已经在原创 2022-03-03 21:34:37 · 1218 阅读 · 0 评论 -
Trie树(字典树)
目录碎碎念式讲解变量解释AcWing 835. Trie字符串统计(模板题)碎碎念式讲解Trie树用来快速存储、查找字符串集合的数据结构要么全大写字母,全小写字母,全数字,全0、1字母个数不会很多高效的查找某个字符串在Trie树种是否出现过、出现过多少次哈夫曼树典型用堆来做(和trie树长得比较像,但是不一样)Dijiskra,很多贪心,dp都需要用到堆优化每个节点最多向外连26条边p编号节点不存在u这个节点的话,就添加上一个节点,编号顺移以这个节点(用编号指示)结尾的单词数量多了一个原创 2022-02-24 11:22:56 · 437 阅读 · 0 评论 -
最小生成树
最小生成树树、生成树、最小生成树实现最小生成树的两种算法一、prim (普里姆算法)——让一棵树长大二、kruskal算法 ——合木成林树、生成树、最小生成树树:一个无向连通图,不包含回路(连通图中不存在环,该无向连通图就是树生成树:覆盖途中每一个顶点的树最小生成树:有权网络中满足 各边权值 之和最小的支撑树一个有N个点的图,边一定是大于等于N-1条的。图的最小生成树,就是在这些边中选择N-1条出来,连接所有的N个点。这N-1条边的边权之和是所有方案中最小的。应用:要在n个城市之间铺设光缆,原创 2022-02-09 20:14:27 · 1059 阅读 · 0 评论 -
树形 DP
树状DP简单入门题[P1352 没有上司的舞会](https://www.luogu.com.cn/problem/P1352)一、dfs方法更周到的解法二、bfs+for循环(终于有点理解为什么说dfs能做到的bfs都可以做到了)从底部节点开始,节点由孩子信息推出(叶子节点孩子信息为0哪)三、拓扑排序(节点fa[x]由节点x信息推出)[P2016 战略游戏](https://www.luogu.com.cn/problem/P2016)简单入门题P1352 没有上司的舞会一、dfs方法普通dp一般原创 2022-02-08 00:09:54 · 451 阅读 · 0 评论 -
n0=n2+1,N个结点的红黑树中红色结点的个数
[SDOI2008]红黑树(TREE) 题目对于任意一棵二叉树,终端节点(度为0的节点)数为n0,度为2的节点数为n2,则n0=n2+1贪心思路:树形DP写法题目https://ac.nowcoder.com/acm/problem/20319对于任意一棵二叉树,终端节点(度为0的节点)数为n0,度为2的节点数为n2,则n0=n2+1n个节点有n-1条边,度为2的节点对边的贡献度为2对于节点数:n=n0+n1+n2; ①对于变数: n-1=n1+n2 * 2; ②①–②式原创 2022-02-07 15:57:49 · 1458 阅读 · 0 评论 -
AVL树实现代码、红黑树参考链接
AVL平衡二叉树的调整最基本最稳的规律——LL——第一个不平衡节点右旋一次RR——第一个不平衡节点左旋一次LR——涉及的节点有三个g,p,q,第一个被破坏节点g,g的左孩子g->left(记作p),g的左孩子的右孩子p->right(记作q)(不一定是被插入节点噢,被插入节点可能是q,也可能在q的左/右子树,但不管是三种情况中的哪种,只关心q)RL——先右旋再左旋根据**插入节点位于被破坏节点的方位**,将不平衡的情形分为4类——LL,RR、 LR、RL删除总体测试平衡二叉树的调整被插入/删原创 2022-02-06 15:03:54 · 808 阅读 · 0 评论 -
求二叉树底下两层节点数(非链表形式)、dfs求节点层数
1115 Counting Nodes in a BST (30 分)不用链表用数组非链表形式#include<iostream>#include<queue>#include <algorithm> using namespace std;const int MAX=1005;#define inf 0x3f3f3fint a[MAX];//存放节点的值 int index;//随着向a数组中插入节点,index逐渐确定 int l[MAX];//原创 2022-01-25 18:18:07 · 305 阅读 · 0 评论 -
2017-L3-1 二叉搜索树的结构 (30分)
题目:二叉搜索树或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;它的左、右子树也分别为二叉搜索树。(摘自百度百科)给定一系列互不相等的整数,将它们顺次插入一棵初始为空的二叉搜索树,然后对结果树的结构进行描述。你需要能判断给定的描述是否正确。例如将{ 2 4 1 3 0 }插入后,得到一棵二叉搜索树,则陈述句如“2是树的根”、“1和4是兄弟结点”、“3和0在同一层上”(指自顶向下的深度原创 2022-01-24 23:20:48 · 198 阅读 · 0 评论 -
二叉搜索树 基本操作
二叉搜索树插入节点搜索节点查找最小/大关键字给定一个元素查找后继(寻找前驱节点与寻找后继对称返回节点所在层数(根节点第0层y节点取代x节点的位置,使y成为x父节点的孩子,便于删除操作二叉搜索树 中序遍历 顺序输出数据整体测试typedef struct node{ int val; node*lt;//left可能会重名 node*rt; node*fq;//指向父亲的指针 }node;typedef struct node* tree;插入节点//插入节点 node *Insert(原创 2022-01-24 21:12:19 · 200 阅读 · 0 评论 -
D. Tree Construction
用set维护有序序列,逐一插入元素构造搜索二叉树BSTD. Tree Construction逐一插入节点构造二叉树的过程中,用set维护已经插入二叉树的有序序列对于即将插入的节点,要在二叉树中找到父节点(顺便记录父节点)要先在二叉树中找到与他相邻的值,要么是比它小的数的右孩子,要么是比它大的数的左孩子总之父节点一定在与他相邻的两个节点当中,因为找位置插入的规则就是先找到相邻节点举个例子,虽然根节点的左子树的最右下角节点与根节点相邻但根节点已有左孩子,这个最右下节点不能认根结点当父节点,插入规原创 2022-01-24 13:06:32 · 228 阅读 · 0 评论