从广度优先到深度优先,只差一个数据结构。

从上往下打印二叉树,实质是在考察树的遍历问题,显然不同于更为经典的先序、中序和后序遍历,而属于一种层次遍历,或曰广度优先遍历。

二叉树节点的定义如下:

struct BinaryTreeNode
{int val;BinaryTreeNode* lft;BinaryTreeNode* rgt;
};

使用队列(FIFO)实现广度优先

#include <deque>void bfs(BinaryTreeNode* root)
{if(!root)return;deque<BinaryTreeNode*> treeNodeDeque;treeNodeDeque.push_back(root);while (!treeNodeDeque.empty()){BinaryTreeNode* node = treeNodeDeque.front();treeNodeDeque.pop_front();// .. 可对 node 指针做各种处理if (node->lft)treeNodeDeque.push_back(node->lft);if (node->rgt)treeNodeDeque.push_back(node->rgt);}
}

使用栈(FILO)实现深度优先

#include <stack>void dfs(BinaryTreeNode* root)
{if (!root)return;stack<BinaryTreeNode*> treeNodeStack;treeNodeStack.push(root);while (!treeNodeStack.empty()){BinaryTreeNode* node = treeNodeStack.top();treeNodeStack.pop();// ... 对 node 节点做各种处理if (node->lft)treeNodeStack.push(node->lft);if (node->rgt)treeNodeStack.push(node->rgt);}
}

【剑指 offer】(二十三)—— 从上往下打印二叉树(或曰层次遍历、广度优先遍历)相关推荐

  1. 【LeetCode】剑指 Offer 32 - II. 从上到下打印二叉树 II

    [LeetCode]剑指 Offer 32 - II. 从上到下打印二叉树 II 文章目录 [LeetCode]剑指 Offer 32 - II. 从上到下打印二叉树 II 一.层序遍历 BFS 一. ...

  2. leetcode 打印_剑指 Offer 32 - III 从上到下打印二叉树 III - leetcode 剑指offer

    题目难度: 中等 原题链接 今天继续更新剑指 offer 系列, 这道题相比昨天那道题多了个每层打印方向不同的需求, 聪明的你想到应该如何实现了吗? 老样子晚上 6 点 45 分准时更新公众号 每日精 ...

  3. 【LeetCode】剑指 Offer 32 - III. 从上到下打印二叉树 III

    [LeetCode]剑指 Offer 32 - III. 从上到下打印二叉树 III 文章目录 [LeetCode]剑指 Offer 32 - III. 从上到下打印二叉树 III package o ...

  4. 剑指offer之分行从上到下打印二叉树

    1 题目 分行从上到下打印二叉树 23 5 1 4 2 3 我们打印如下 23 51 4 2 3 2 分析 之前这篇博客写了通过队列按层打印剑指offer之按层打印树节点 现在无非就是还要按照条件打印 ...

  5. 【最佳解法】剑指 Offer 32 - III. 从上到下打印二叉树 III

    立志用最少的代码做最高效的表达 请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推. 例如: 给定二叉 ...

  6. 【简洁+注释】剑指 Offer 32 - II. 从上到下打印二叉树 II

    立志用最少的代码做最高效的表达 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行. 例如: 给定二叉树: [3,9,20,null,null,15,7], 返回其层次遍历结果 ...

  7. 剑指 Offer 32 - III. 从上到下打印二叉树 III

    解题思路:层级遍历 看本题思路之前首先看 1.从上到下打印二叉树1:https://blog.csdn.net/Mr_Jiax/article/details/109783502 2.从上到下打印二叉 ...

  8. 【简洁写法】剑指 Offer 32 - I. 从上到下打印二叉树

    立志用最少的代码做最高效的表达 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印. 例如: 给定二叉树: [3,9,20,null,null,15,7], 返回: [3,9,20,1 ...

  9. 剑指 Offer 32 - I. 从上到下打印二叉树

    从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印. 例如: 给定二叉树: [3,9,20,null,null,15,7], 3/ \9 20/ \15 7 返回: [3,9,20,1 ...

  10. Python剑指offer:分行从上到下打印二叉树

    从上到下按层打印二叉树,同一层的节点按照从左到右 的顺序打印,每一层打印到第一行,例如本题中上一个问题的二叉树 输出形式会是: 8 6 10 5 7 9 11 这道题和前面一道题十分类似,也可以用一个 ...

最新文章

  1. win32应用程序_不是有效的win32应用程序怎么解决
  2. Windows Forms Programming In C# 读书笔记 - 第三章 Dialogs
  3. react封装函数_GitHub - daifee/react-component: 用 React 封装一套常用组件
  4. (2)谷歌2011校园招聘:
  5. CSharp for Jupyter Notebook
  6. 高考英语口试计算机系,高考英语口试材料.docx
  7. python控制ppt定时_python中使用requests实现自动回帖.ppt
  8. CVPR 2018 paper list(论文列表)
  9. 【PL/SQL】 控制结构
  10. 参与esri用户大会感想
  11. The Book of Qt4 : The Art of Building Qt Application 阅读笔记
  12. office 办公软件使用笔记
  13. Chrome下载大文件速度慢经常失败
  14. yolo数据集标注软件安装+使用流程
  15. 惠普HP Ink Tank 118 打印机驱动
  16. 苹果你深深的伤害了我,还不让我说
  17. 云原生系列 六【轻松入门容器基础操作】
  18. web大二实训作业:校园运动会网站设计——运动会图片轮播图片遮罩特效(4页)体育 HTML+CSS+JavaScript HTML5期末大作业...
  19. LDF文件过大,如何收缩
  20. 转:量子密钥分发和BB84协议

热门文章

  1. Spark mapPartition方法与map方法的区别
  2. linux文件共享加锁,Linux共享数据管理——文件锁定
  3. spark读写hive数据
  4. OpenCV精进之路(二十一):实例——去除发票上的印章
  5. linux 配置redis密码
  6. 小技巧——直接在目录中输入cmd然后就打开cmd命令窗口
  7. BZOJ2563 阿狸和桃子的游戏
  8. JAVA受检异常和非受检异常举例
  9. 如何解决inline-block元素的空白间距
  10. C语言输出规定长度的整数,不够位数前面补零