leetcode104 二叉树的最大深度 https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/

深度搜索分两种:递归(使用栈)

广度搜索:非递归(使用队列)

1. 广度搜索bfs:(标准模板)(也可建议用c++的queue,deque是双端队列,可以实现头尾的插入和弹出)

  1. 1 /**
  2. 2 * Definition for a binary tree node.
  3. 3 * struct TreeNode {
  4. 4 * int val;
  5. 5 * TreeNode *left;
  6. 6 * TreeNode *right;
  7. 7 * TreeNode(int x) : val(x), left(NULL), right(NULL) {}
  8. 8 * };
  9. 9 */
  10. 10 class Solution {
  11. 11 public:
  12. 12 int maxDepth(TreeNode* root) {
  13. 13 deque<TreeNode*> d;
  14. 14 if(!root)
  15. 15 return 0;
  16. 16 d.push_back(root);
  17. 17 int num = 0;
  18. 18 while(!d.empty())
  19. 19 {
  20. 20 int t = d.size();
  21. 21 //cout<<"t:"<<t<<endl;
  22. 22 for(int i=0;i<t;i++)
  23. 23 {
  24. 24 TreeNode *p = d.front();
  25. 25 d.pop_front();
  26. 26 if(p->left)
  27. 27 d.push_back(p->left);
  28. 28 if(p->right)
  29. 29 d.push_back(p->right);
  30. 30 }
  31. 31 num++;
  32. 32 }
  33. 33 return num;
  34. 34 }
  35. 35 };

2. 深搜,递归

  1. 1 /**
  2. 2 * Definition for a binary tree node.
  3. 3 * struct TreeNode {
  4. 4 * int val;
  5. 5 * TreeNode *left;
  6. 6 * TreeNode *right;
  7. 7 * TreeNode(int x) : val(x), left(NULL), right(NULL) {}
  8. 8 * };
  9. 9 */
  10. 10 class Solution {
  11. 11 public:
  12. 12 int maxDepth(TreeNode* root) {
  13. 13 if(!root)
  14. 14 return 0;
  15. 15
  16. 16 return max(maxDepth(root->left), maxDepth(root->right)) +1;
  17. 17 }
  18. 18 };

算法数据结构——数的深搜和广搜(dfs和bfs)的更多相关文章

  1. 算法与数据结构(四) 图的物理存储结构与深搜、广搜(Swift版)

    开门见山,本篇博客就介绍图相关的东西.图其实就是树结构的升级版.上篇博客我们聊了树的一种,在后边的博客中我们还会介绍其他类型的树,比如红黑树,B树等等,以及这些树结构的应用.本篇博客我们就讲图的存储结 ...

  2. E. New Reform_贪心,深搜,广搜。

    E. New Reform time limit per test 1 second memory limit per test 256 megabytes input standard input ...

  3. DFS,BFS 练习(深搜,广搜,图,leetcode)

    https://leetcode-cn.com/problems/route-between-nodes-lcci/ 节点间通路.给定有向图,设计一个算法,找出两个节点之间是否存在一条路径. 示例1: ...

  4. 算法学习笔记(六) 二叉树和图遍历—深搜 DFS 与广搜 BFS

    图的深搜与广搜 复习下二叉树.图的深搜与广搜. 从图的遍历说起.图的遍历方法有两种:深度优先遍历(Depth First Search), 广度优先遍历(Breadth First Search),其 ...

  5. 深搜(DFS)广搜(BFS)详解

    图的深搜与广搜 一.介绍: p { margin-bottom: 0.25cm; direction: ltr; line-height: 120%; text-align: justify; orp ...

  6. DFS-BFS(深搜广搜)原理及C++代码实现

    深搜和广搜是图很多算法的基础,很多图的算法都是从这两个算法中启发而来. 深搜简单地说就是直接一搜到底,然后再回溯,再一搜到底,一直如此循环到没有新的结点. 广搜简单地说就是一层一层的搜,像水的波纹一样 ...

  7. HDU 3666 THE MATRIX PROBLEM (差分约束 深搜 & 广搜)

    THE MATRIX PROBLEM Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  8. poj3083 Children of the Candy Corn 深搜+广搜

    这道题有深搜和广搜.深搜还有要求,靠左或靠右.下面以靠左为例,可以把简单分为上北,下南,左西,右东四个方向.向东就是横坐标i不变,纵坐标j加1(i与j其实就是下标).其他方向也可以这样确定.通过上一步 ...

  9. C++算法 广搜

    有一个同学推荐我写一下广搜,广搜在最短路(骗分)上确实也有突出贡献,普及组应该也会考到,我今天就给要考普及组的同学讲讲课,今天讲广搜. 广搜,把可以走到的地点存进队列,然后一个个走,所以他第一次走到一 ...

随机推荐

  1. Mycat分库分表(一)

    随着业务变得越来越复杂,用户越来越多,集中式的架构性能会出现巨大的问题,比如系统会越来越慢,而且时不时会宕机,所以必须要解决高性能和可用性的问题.这个时候数据库的优化就显得尤为重要,在说优化方案前,先 ...

  2. 机器学习-对数logistics回归

    今天 学习了对数几率回归,学的不是很明白x1*theat1+x2*theat2...=y 对于最终的求解参数编程还是不太会,但是也大致搞明白了,对数几率回归是由于线性回归函数的结果并不是我们想要的,我 ...

  3. UNIX系统编程:文件IO(I)

    1.标准C库中访问文件用的是文件指针FILE *(stdin,stdout,stderr):对于linux系统编程而言,所有对设备或文件的操作都是通过文件描述符进行的 2.当打开或者创建一个文件的时候 ...

  4. Natapp内网穿透服务工具

    在做微信开发的时候,调用微信接口成功之后,微信会回调我们事先配置好的一个接口.由于微信的服务是在外网的,所以这个回调接口也只能是外网,而且微信要求回调接口只能是通过ICP备案的域名,不能使用IP,所以 ...

  5. scrapy学习之爬虫练习平台22

    前言 上一篇文章中爬取了爬虫练习平台的所有 ssr 网站,都是比较简单的,没有反爬措施,这次来爬一下后面的 spa 系列. 环境准备 这里沿用了上篇文章的环境和设置,就不重新搭建环境了. 开始爬取 s ...

  6. IGH_Master主站配置驱动伺服电机和变频器总结

    IGH_Master主站配置驱动伺服电机和变频器总结 Ethercat是倍福公司提出的一种工业现场总线协议,具有很好的实时性,IGH是一种开源的Ethercat主站实现协议,本文总结了一下使用IGH_ ...

  7. 通过ip访问项目

  8. 使用思维导图MindManager能否增强记忆?

    学生时代,每当面对冗杂的需要背诵的课业时,有很多人都会发出"这么多内容怎么背啊"."我讨厌死记硬背"."昨天背完今天就忘了"的呐喊.那么,如 ...

  9. img元素的联用

    img元素的常用属性: src属性:资源地址 alt属性:当图片资源失效时,将出现该属性的设置的文字 最简单的联动: 和a元素联用(直接用a标签套) <a href="https:// ...

  10. C#6,C#7,V#8,C#9 的新特性总结

    看了一下,下图的所有我都有用过,感觉越高的版本越好用. C# 6.0 特性 C# 7.0  Vs2017 C# 8.0     .net core 3.0+ C#9.0 .net5 C#的各种语法糖, ...