找树的根和孩子

简介: 【问题描述】  给定一棵树,输出树的根root,孩子最多的结点max以及他的孩子【输入格式】  第一行:n(结点数>m; 8 for(i=1;i>x>>y;11 tree[y]=x;12 }13 for(i=1;i

【问题描述】
  给定一棵树,输出树的根root,孩子最多的结点max以及他的孩子
【输入格式】
  第一行:n(结点数<=100),m(边数<=200)。 以下m行;每行两个结点x和y,表示y是x的孩子(x,y<=1000)。
【输出格式】
  第一行:树根:root。 第二行:孩子最多的结点max。第三行:max的孩子。
【输入样例】
  8 7
  4 1
  4 2
  1 3
  1 5
  2 6
  2 7
  2 8
【输出样例】
  4
  2
  6 7 8

【参考程序】

 1 #include<iostream>
 2 using namespace std;
 3 int n,m,tree[101]={0};
 4 int main()
 5 {
 6   int i,x,y,root,maxroot,sum=0,j,Max=0;
 7   cin>>n>>m;
 8   for(i=1;i<=m;i++)
 9   {
10     cin>>x>>y;
11     tree[y]=x;
12   }
13   for(i=1;i<=n;i++)                     //找出树根 
14      if(tree[i]==0)
15      {
16         root=i;break;
17      }
18   for(i=1;i<=n;i++)                     //找孩子最多的结点
19   {
20      sum=0; 
21      for(j=1;j<=n;j++)
22         if(tree[j]==i) sum++;
23      if(sum>Max)
24      {
25          Max=sum;maxroot=i;
26      }
27   }    
28   cout<<root<<endl<<maxroot<<endl;  
29   for(i=1;i<=n;i++)
30      if(tree[i]==maxroot) cout<<i<<" ";
31   return 0; 
32 }

 

相关文章
|
7月前
【每日一题Day300】LC2236判断根结点是否等于子结点之和
【每日一题Day300】LC2236判断根结点是否等于子结点之和
36 0
|
7月前
|
存储 算法
算法编程(二十六):判断路径是否相交
算法编程(二十六):判断路径是否相交
65 0
代码随想录Day15 二叉树 LeetCodeT513 找树左下角的值 T112路径总和 T106 从中序和后序遍历构造二叉树
代码随想录Day15 二叉树 LeetCodeT513 找树左下角的值 T112路径总和 T106 从中序和后序遍历构造二叉树
44 0
|
7月前
|
人工智能 算法 BI
【深度优先搜索】【树】【图论】2973. 树中每个节点放置的金币数目
【深度优先搜索】【树】【图论】2973. 树中每个节点放置的金币数目
|
7月前
|
算法
【每日一题Day235】LC1483树节点的第 K 个祖先 | 倍增
【每日一题Day235】LC1483树节点的第 K 个祖先 | 倍增
54 1
|
测试技术 C++
【C++从0到王者】第三十三站:AVL树
【C++从0到王者】第三十三站:AVL树
39 0
JavaWeb - 查询任意节点的所有子节点(包括孙子节点)
JavaWeb - 查询任意节点的所有子节点(包括孙子节点)
375 0
|
存储 算法 Java
代码随想录训练营day18| 513.找树左下角的值 112. 路径总和 106.从中序与后序遍历序列构造二叉树...
代码随想录训练营day18| 513.找树左下角的值 112. 路径总和 106.从中序与后序遍历序列构造二叉树...
剑指offer 76. 树中两个结点的最低公共祖先
剑指offer 76. 树中两个结点的最低公共祖先
70 0
头歌两种遍历方法建立一棵树(前序和中序)
头歌两种遍历方法建立一棵树(前序和中序)