当前位置:网站首页>310. minimum height tree
310. minimum height tree
2022-06-27 05:55:00 【Mr Gao】
310. Minimum height tree
A tree is an undirected graph , Any two of these vertices are connected by only one path . let me put it another way , Any connected graph without simple loops is a tree .
Give you a tree that contains n Tree of nodes , Marked as 0 To n - 1 . Given number n And one with n - 1 An undirected edge edges list ( Each side is a pair of labels ), among edges[i] = [ai, bi] Represents the node in the tree ai and bi There is an undirected edge between .
You can select any node in the tree as the root . When selecting a node x As the root node , Let the height of the result tree be h . In all possible trees , Tree with minimum height ( namely ,min(h)) go by the name of Minimum height tree .
Please find all Minimum height tree And press In any order Return a list of their root node labels .
Treelike Height It refers to the number of edges on the longest downward path between the root node and the leaf node .
Example 1:
Input :n = 4, edges = [[1,0],[1,2],[1,3]]
Output :[1]
explain : As shown in the figure , When the root is labeled 1 The nodes of , The height of the tree is 1 , This is the only minimum height tree .
Example 2:
Input :n = 6, edges = [[3,0],[3,1],[3,2],[3,4],[5,4]]
Output :[3,4]
/** * Note: The returned array must be malloced, assume caller calls free(). */
int min_h;
int dfs( int** edges, int edgesSize,int now_node,int h,int *r,int *rs){
int i=0;
int maxh=0;
int num=0;
for(i;i<edgesSize;i++){
if(edges[i][0]==now_node&&r[edges[i][1]]==0){
r[edges[i][1]]=1;
int max1= dfs(edges,edgesSize,edges[i][1],h+1,r,rs);
if(max1>maxh){
maxh=max1;
}
r[edges[i][1]]=0;
}
if(edges[i][1]==now_node&&r[edges[i][0]]==0){
r[edges[i][0]]=1;
int max1= dfs(edges,edgesSize,edges[i][0],h+1,r,rs);
if(max1>maxh){
maxh=max1;
}
r[edges[i][0]]=0;
}
}
if(maxh==0){
return h;
}
else{
return maxh;
}
}
int* findMinHeightTrees(int n, int** edges, int edgesSize, int* edgesColSize, int* returnSize){
int r[n];
int rs[n];
int i;
int *re=(int *)malloc(sizeof(int)*n);
for(i=0;i<n;i++){
r[i]=0;
rs[i]=0;
}
int min=1000;
for(i=0;i<n;i++){
if(rs[i]!=0){
if(rs[i]<min){
min=rs[i];
}
continue;
}
r[i]=1;
int h2=dfs(edges,edgesSize,i,1,r,rs);
rs[i]=h2;
if(h2<min){
min=h2;
}
r[i]=0;
}
printf("min %d ",min);
int size=0;
for(i=0;i<n;i++){
printf("%d| ",rs[i]);
if(rs[i]==min){
re[size++]=i;
}
}
* returnSize=size;
return re;
}
边栏推荐
- Create a basic WDM driver and use MFC to call the driver
- Epics record reference 5 -- array analog input recordarray analog input (AAI)
- Spark 之 WholeStageCodegen
- 多线程基础部分Part 1
- 30个单片机常见问题及解决办法!
- [cocos creator 3.5.1] addition of coordinates
- 双位置继电器HJWS-9440
- KubeSphere 集群配置 NFS 存储解决方案-收藏版
- Code is data
- 【Cocos Creator 3.5.1】input.on的使用
猜你喜欢

Leetcode99 week race record

Program ape learning Tiktok short video production
Software testing year end summary report template

Dual position relay dls-34a dc0.5a 220VDC

IAR Systems全面支持芯驰科技9系列芯片
![[622. design cycle queue]](/img/f2/d499ac9ddc50b73f8c83e8b6af2483.png)
[622. design cycle queue]

多线程基础部分Part3

Edge loads web pages in IE mode - edge sets ie compatibility

块级元素&行内元素

How win 10 opens the environment variables window
随机推荐
[collection] Introduction to basic knowledge of point cloud and functions of point cloud catalyst software
Codeforces Round #802 (Div. 2)
Assembly language - Wang Shuang Chapter 3 notes and experiments
310. 最小高度树
免费的 SSH 和 Telnet 客户端PuTTY
Unity中跨平臺獲取系統音量
Logu p4683 [ioi2008] type printer problem solving
Open the door small example to learn ten use case diagrams
Database - index
【QT小记】QT中正则表达式QRegularExpression的基本使用
Avoid asteroids
汇编语言-王爽 第9章 转移指令的原理-笔记
Obtenir le volume du système à travers les plateformes de l'unit é
双位置继电器RXMD2-1MRK001984 DC220V
[FPGA] design and implementation of frequency division and doubling based on FPGA
【QT小点】实现看门狗功能,检测外部程序是否在运行
Navigation [machine learning]
【Cocos Creator 3.5.1】坐标的加法
洛谷P4683 [IOI2008] Type Printer 题解
表单校验 v-model 绑定的变量,校验失效的解决方案