【剑指 offer】(二十三)—— 从上往下打印二叉树(或曰层次遍历、广度优先遍历)
从广度优先到深度优先,只差一个数据结构。
从上往下打印二叉树,实质是在考察树的遍历问题,显然不同于更为经典的先序、中序和后序遍历,而属于一种层次遍历,或曰广度优先遍历。
二叉树节点的定义如下:
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】(二十三)—— 从上往下打印二叉树(或曰层次遍历、广度优先遍历)相关推荐
- 【LeetCode】剑指 Offer 32 - II. 从上到下打印二叉树 II
[LeetCode]剑指 Offer 32 - II. 从上到下打印二叉树 II 文章目录 [LeetCode]剑指 Offer 32 - II. 从上到下打印二叉树 II 一.层序遍历 BFS 一. ...
- leetcode 打印_剑指 Offer 32 - III 从上到下打印二叉树 III - leetcode 剑指offer
题目难度: 中等 原题链接 今天继续更新剑指 offer 系列, 这道题相比昨天那道题多了个每层打印方向不同的需求, 聪明的你想到应该如何实现了吗? 老样子晚上 6 点 45 分准时更新公众号 每日精 ...
- 【LeetCode】剑指 Offer 32 - III. 从上到下打印二叉树 III
[LeetCode]剑指 Offer 32 - III. 从上到下打印二叉树 III 文章目录 [LeetCode]剑指 Offer 32 - III. 从上到下打印二叉树 III package o ...
- 剑指offer之分行从上到下打印二叉树
1 题目 分行从上到下打印二叉树 23 5 1 4 2 3 我们打印如下 23 51 4 2 3 2 分析 之前这篇博客写了通过队列按层打印剑指offer之按层打印树节点 现在无非就是还要按照条件打印 ...
- 【最佳解法】剑指 Offer 32 - III. 从上到下打印二叉树 III
立志用最少的代码做最高效的表达 请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推. 例如: 给定二叉 ...
- 【简洁+注释】剑指 Offer 32 - II. 从上到下打印二叉树 II
立志用最少的代码做最高效的表达 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行. 例如: 给定二叉树: [3,9,20,null,null,15,7], 返回其层次遍历结果 ...
- 剑指 Offer 32 - III. 从上到下打印二叉树 III
解题思路:层级遍历 看本题思路之前首先看 1.从上到下打印二叉树1:https://blog.csdn.net/Mr_Jiax/article/details/109783502 2.从上到下打印二叉 ...
- 【简洁写法】剑指 Offer 32 - I. 从上到下打印二叉树
立志用最少的代码做最高效的表达 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印. 例如: 给定二叉树: [3,9,20,null,null,15,7], 返回: [3,9,20,1 ...
- 剑指 Offer 32 - I. 从上到下打印二叉树
从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印. 例如: 给定二叉树: [3,9,20,null,null,15,7], 3/ \9 20/ \15 7 返回: [3,9,20,1 ...
- Python剑指offer:分行从上到下打印二叉树
从上到下按层打印二叉树,同一层的节点按照从左到右 的顺序打印,每一层打印到第一行,例如本题中上一个问题的二叉树 输出形式会是: 8 6 10 5 7 9 11 这道题和前面一道题十分类似,也可以用一个 ...
最新文章
- win32应用程序_不是有效的win32应用程序怎么解决
- Windows Forms Programming In C# 读书笔记 - 第三章 Dialogs
- react封装函数_GitHub - daifee/react-component: 用 React 封装一套常用组件
- (2)谷歌2011校园招聘:
- CSharp for Jupyter Notebook
- 高考英语口试计算机系,高考英语口试材料.docx
- python控制ppt定时_python中使用requests实现自动回帖.ppt
- CVPR 2018 paper list(论文列表)
- 【PL/SQL】 控制结构
- 参与esri用户大会感想
- The Book of Qt4 : The Art of Building Qt Application 阅读笔记
- office 办公软件使用笔记
- Chrome下载大文件速度慢经常失败
- yolo数据集标注软件安装+使用流程
- 惠普HP Ink Tank 118 打印机驱动
- 苹果你深深的伤害了我,还不让我说
- 云原生系列 六【轻松入门容器基础操作】
- web大二实训作业:校园运动会网站设计——运动会图片轮播图片遮罩特效(4页)体育 HTML+CSS+JavaScript HTML5期末大作业...
- LDF文件过大,如何收缩
- 转:量子密钥分发和BB84协议