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

力扣559:N叉树的最大深度

力扣559:N叉树的最大深度

  • 题目
  • 思路
  • 代码

题目

给定一个 N 叉树,找到其最大深度。

最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。

N 叉树输入按层序遍历序列化表示,每组子节点由空值分隔(请参见示例)。

思路

N叉树的最大深度其实就是子树的最大深度再加上1即可,那么子树的最大深度也可以这样表示所以我们可以一直追踪到叶节点的深度再从下往上的返回从而得到最终答案。这也就是dfs即深度优先搜索的思路。
那么我们是否还能想到其他的办法呢?我们知道树是可以被分为一层一层的所以我们只需要定义一个整数然后从根节点一层一层的遍历每遍历一层都让整数+1,最后得到的也就是答案。这种方法叫做bfs即广度优先搜索。
dfs和bfs都是图论中重要的思想和方法,广泛出现在拓扑排序,寻路(走迷宫),搜索引擎,爬虫等,也频繁出现在 leetcode,高频面试题中。

代码

/*
// Definition for a Node.
class Node {
public:int val;vector<Node*> children;Node() {}Node(int _val) {val = _val;}Node(int _val, vector<Node*> _children) {val = _val;children = _children;}
};
*///dfs即深度优先搜索
class Solution {
public:int maxDepth(Node* root) {if(root == nullptr){return 0;}vector<Node*> chs(root->children);int ans = 0;for(auto ch : chs){int childdepth = maxDepth(ch);ans = max(childdepth,ans);}return ans+1;}
};//bfs即广度优先搜索
class Solution {
public:int maxDepth(Node* root) {if(root == nullptr){return 0;}queue<Node*> qu;int res = 0;qu.push(root);while(!qu.empty()){int size = qu.size();while(size > 0){Node* n = qu.front();qu.pop();vector<Node*> chs = n->children;for(auto ch : chs){qu.push(ch);}size--;}res++;}return res;}
};
http://www.lryc.cn/news/617054.html

相关文章:

  • Beelzebub靶机攻略
  • 腾讯云EdgeOne KV存储在游戏资源发布中的技术实践与架构解析
  • 机器学习之K-means(K-均值)算法
  • 【数据分析】循环移位岭回归分析:光遗传学冻结行为模式研究
  • 复现论文《多无人机协同任务分配算法设计与实现》
  • 小学数学计算技巧全攻略
  • 7、西门子PLC基础术语:数据单位、存储区域、寻址方式、字节序
  • 生产环境中atop命令使用总结
  • FreeRTOS 任务与中断函数:运行机制、关键区别与使用准则
  • GC如何判断对象可以被回收?
  • 利用容器编排完成haproxy和nginx负载均衡架构实施
  • 【代码随想录day 15】 力扣 222.完全二叉树的节点个数
  • 【Python 小脚本·大用途 · 第 2 篇】
  • Day11 原理篇
  • afsim2.9_使用QtCreator和VSCode编译
  • Excel版经纬度和百分度互转v1.1
  • 第二章、LSTM(Long Short-term Memory:长短时记忆网络)
  • 基于python/django框架的车型识别系统
  • iptables -F 与 iptables -X
  • 基于Django的图书馆管理系统的设计与实现
  • 精准计算Word文档页数的PHP类
  • foxmail网站邮箱网络营销策略论文
  • 自己做网站排名好吗天津seo推广
  • 长春网站策划制作网页的代码
  • 我想创建一个网站sem 优化价格
  • 网站开发虚拟主机管理系统nba西部最新排名
  • 四川建设部网站官网温州最好的seo
  • 成都建设网站哪个好seo外包杭州
  • 南京学习做网站独立站搭建要多少钱
  • 北京网页设计学校成都sem优化