当前位置: 首页 > news >正文

《算法笔记》9.3小节——数据结构专题(2)->树的遍历 问题 B: 树的高度

题目描述

一棵树有n个节点,其中1号节点为根节点。

输入

第一行是整数n,表示节点数

后面若干行,每行两个整数a b,表示b是a的子节点。

输出

求这棵树的高度(根节点为第1层)

样例输入
5
1 2
1 3
3 4
3 5
样例输出
3

分析: 从根节点开始,向当前节点的孩子设置高度,直到所有的孩子都有高度之后,输出高度的最大值。

#include    <algorithm>
#include     <iostream>
#include      <cstdlib>
#include      <cstring>
#include       <string>
#include       <vector>
#include       <cstdio>
#include        <queue>
#include        <stack>
#include        <ctime>
#include        <cmath>
#include          <map>
#include          <set>
#include<unordered_map>
#define INF 0x3f3f3f3f
#define db1(x) cout<<#x<<"="<<(x)<<endl
#define db2(x,y) cout<<#x<<"="<<(x)<<", "<<#y<<"="<<(y)<<endl
#define db3(x,y,z) cout<<#x<<"="<<(x)<<", "<<#y<<"="<<(y)<<", "<<#z<<"="<<(z)<<endl
#define db4(x,y,z,a) cout<<#x<<"="<<(x)<<", "<<#y<<"="<<(y)<<", "<<#z<<"="<<(z)<<", "<<#a<<"="<<(a)<<endl
#define db5(x,y,z,a,r) cout<<#x<<"="<<(x)<<", "<<#y<<"="<<(y)<<", "<<#z<<"="<<(z)<<", "<<#a<<"="<<(a)<<", "<<#r<<"="<<(r)<<endl
using namespace std;

int main(void)
{
    #ifdef test
    freopen("in.txt","r",stdin);
    //freopen("out.txt","w",stdout);
    clock_t start=clock();
    #endif //test

    int n,a,b,ans=1;scanf("%d",&n);
    vector<int>num[n+1];
    int depth[n+5]={0};depth[1]=1;
    while(~scanf("%d%d",&a,&b))
    {
        num[a].push_back(b);
    }
    queue<int>que;que.push(1);
    while(!que.empty())
    {
        int index=que.front();que.pop();
        int l=num[index].size();
        for(int i=0;i<l;++i)
        {
            depth[num[index][i]]=depth[index]+1;
            ans=max(ans,depth[num[index][i]]);
            que.push(num[index][i]);
        }
    }
    printf("%d\n",ans);


    #ifdef test
    clockid_t end=clock();
    double endtime=(double)(end-start)/CLOCKS_PER_SEC;
    printf("\n\n\n\n\n");
    cout<<"Total time:"<<endtime<<"s"<<endl;        //s为单位
    cout<<"Total time:"<<endtime*1000<<"ms"<<endl;    //ms为单位
    #endif //test
    return 0;
}

 

相关文章:

  • VSCode创建VUE项目(四)增加用户Session管理
  • 常⻅CMS漏洞之一:WordPress
  • 【C++】priority_queue的使用及模拟实现(含仿函数介绍)
  • v-form标签里的:rules有什么作用。如何定义。
  • Microsoft Edge浏览器的取证分析(基于Chromium)
  • CSGHub开源版本v1.5.0更新
  • Vulnhub靶场matrix-breakout-2-morpheus攻略
  • 在springboot3.x中使用Ehcache3.x
  • 网络编程之客户端通过服务器与另外一个客户端交流
  • oracle删除表中重复数据
  • 正则表达式与拓展正则简单理解
  • LeetCode[93] 复原 IP 地址
  • Mimikyu综合靶场训练
  • 大数据学习(74)-Hue元数据
  • Python标准库之os模块常用方法
  • Excel Script Lab学习笔记
  • Pytorch使用手册(专题五十)—自定义运算符
  • 《Python深度学习》第三讲:神经网络
  • sqlite mmap
  • nginx配置反向代理数据库等插件的原理和方式
  • 网站关闭多久排名会下降/友情链接查询结果
  • wordpress网站建站/网站排名查询
  • 大连网站建设渠道/seo 推广怎么做
  • 电商网站怎么制作/双11各大电商平台销售数据
  • wordpress 后台404/青岛网站seo
  • 找别人做网站可以提供源码吗/短视频营销策划方案