树
数据结构中树的用法
小飞猪Jay
远风知我意,微凉又深情。
展开
-
哈夫曼树的带权路径长度和
正常想要计算哈夫曼树的路径长度之和,是遍历一遍树,将叶结点的权值乘上深度再加和。那么对于路径和的计算有这样一个公式:哈夫曼树的带权路径长度和=等于所有非叶节点的权值和所以说我们只需要每次将数组前两个加到res中,再将两者的和放入数组中重新排序,直到数组中剩一个数停止代码:#include<bits/stdc++.h>using namespace std;int a[10010];int main(){ int n; int res; while(cin >&g.原创 2022-03-27 20:06:12 · 2126 阅读 · 0 评论 -
3039 叶子节点的路径
题目描述:给出一棵n个节点的树,节点编号为1-n(根节点编号为1)。对于每一个叶子节点,输出从根到叶子的路径。(按照路径的字典序)。输入:第一行:1个数n(2 < n <= 1000),表示树的节点数量。后面n-1行:每行2个数x y,表示节点x是节点y的父节点(1 <= x, y <= n)。输出:输出行数等于叶子节点的数量,每行对应从根到叶子节点的路径。路径中的数字为经过节点的编号。按照路径的字典序从小到大输出。数据范围:对于30%的数据,2 < n <原创 2020-09-15 14:07:16 · 962 阅读 · 1 评论 -
无向图最小生成树(两种做法)
最小生成树(MST):权值最小的生成树。构造网的最小生成树必须解决下面两个问题:1、尽可能选取权值小的边,但不能构成回路;2、选取n-1条恰当的边以连通n个顶点;MST性质:假设G=(V,E)是一个连通网,U是顶点V的一个非空子集。若(u,v)是一条具有最小权值的边,其中u∈U,v∈V-U,则必存在一棵包含边(u,v)的最小生成树。1.prim算法基本思想:假设G=(V,E)是连通的,TE是G上最小生成树中边的集合。算法从U={u0}(u0∈V)、TE={}开始。重复执行下列操作:在所有u∈U原创 2020-09-08 12:58:12 · 26609 阅读 · 1 评论 -
codeforce A1. Add on a Tree
题意:一棵树,你可以选定任意两个叶子,给他们之间的路径赋值,问是否能选定任意两条边赋任意的值。思路:其实没有想象的那么复杂,从给的例子就可以看的出来,只要是有一个节点,他的入度是1,出度也是1,那这两条边一定是不可以的,其他情况就都可以满足题意。代码:#include<bits/stdc++.h>#include<iostream>#include<st...原创 2020-03-03 13:21:04 · 152 阅读 · 0 评论 -
二叉树的简单入门代码
左子右兄弟法:#include<iostream>#include<stdio.h>#include<bits/stdc++.h>using namespace std;const int N = 1e5+10;#define NIL -1struct node{ int p , l , r;}T[N];int n , D[N];voi...原创 2020-02-28 16:24:44 · 268 阅读 · 0 评论