当前位置:网站首页>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;
}
边栏推荐
- 双位置继电器RXMD2-1MRK001984 DC220V
- 双位置继电器XJLS-8G/220
- 【QT小点】QT下载链接
- 汇编语言-王爽 第13章 int指令-笔记
- [nips 2017] pointnet++: deep feature learning of point set in metric space
- Opencv实现对象跟踪
- Codeforces Round #802 (Div. 2)
- WebRTC系列-网络传输之7-ICE补充之提名(nomination)与ICE_Model
- Comprehensive application of OpenCV in contour detection and threshold processing
- 【入门】正则表达式基础入门笔记
猜你喜欢
多线程基础部分Part 1
我对于测试团队建设的意见
双位置继电器RXMVB2 R251 204 110DC
Experience oceanbase database under win10
Using domain name forwarding mqtt protocol, pit avoidance Guide
Leetcode99 week race record
How win 10 opens the environment variables window
NLP-D62-nlp比赛D31&刷题D15
汇编语言-王爽 第11章 标志寄存器-笔记
Asp. Net core6 websocket simple case
随机推荐
Leetcode298 weekly race record
Edge loads web pages in IE mode - edge sets ie compatibility
网易云音乐params和encSecKey参数生成代码
Codeforces Round #802 (Div. 2)
Asp.Net Core6 WebSocket 简单案例
WebRTC系列-網絡傳輸之7-ICE補充之提名(nomination)與ICE_Model
汇编语言-王爽 第11章 标志寄存器-笔记
【Cocos Creator 3.5.1】event.getButton()的使用
[collection] Introduction to basic knowledge of point cloud and functions of point cloud catalyst software
[FPGA] design and implementation of frequency division and doubling based on FPGA
How to check the frequency of memory and the number of memory slots in CPU-Z?
KubeSphere 集群配置 NFS 存储解决方案-收藏版
Spark 之 WholeStageCodegen
Kubesphere cluster configuration NFS storage solution - favorite
思维的技术:如何破解工作生活中的两难冲突?
Add widget on qlistwidgetitem
导航【机器学习】
Two position relay hjws-9440
Luogu p2939 [usaco09feb]revamping trails G
Opencv implements object tracking