二叉树高度的代码解析_剑指offer 从上到下打印二叉树
题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
解析:这实际上就是二叉树的层序遍历。规律如下:每次打印节点,如果该节点有子节点,则将子节点放入队列末尾,然后取出队列头部最早进入队列的节点,重复上述操作直至队列为空。用list模拟队列。
代码如下:
class Solution:# 返回从上到下每个节点值列表,例:[1,2,3]def PrintFromTopToBottom(self, root):# write code hereres = []queue = []if not root:return resqueue.append(root)while queue:tmp = queue.pop(0)res.append(tmp.val)if tmp.left:queue.append(tmp.left)if tmp.right:queue.append(tmp.right)return res
扩展1:分行从上到下打印二叉树
题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
解析:层序遍历的变种,本质相同,方法类似。
代码如下:
class Solution:# 返回二维列表[[1,2],[4,5]]def Print(self, pRoot):# write code hereres = []if not pRoot:return resqueue = [pRoot]while queue:level = []next = []for tmp in queue:level.append(tmp.val)if tmp.left:next.append(tmp.left)if tmp.right:next.append(tmp.right)res.append(level)queue = next[:]return res
扩展2:之字形打印二叉树
题目描述
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
解析:层序遍历的变种。
代码如下:
class Solution:def Print(self, pRoot):# write code hereres = []if not pRoot:return resqueue = [pRoot]k = 0while queue:level = []next = []for tmp in queue:level.append(tmp.val)if tmp.left:next.append(tmp.left)if tmp.right:next.append(tmp.right)if k & 1 == 0:res.append(level)else:level.reverse()res.append(level)queue = next[:]k = k + 1return res
2019.3.21
二叉树高度的代码解析_剑指offer 从上到下打印二叉树相关推荐
- C#刷剑指Offer | 从上到下打印二叉树
[C#刷题]| 作者 / Edison Zhou 这是EdisonTalk的第288篇原创内容 我们来用之前学到的数据结构知识来刷<剑指Offer>的一些核心题目(精选了其中30+道题目) ...
- 剑指offer 从上往下打印二叉树
题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 解决方案: import java.util.ArrayList; import java.util.ArrayList; impor ...
- 剑指offer 从上到下打印二叉树
思路:采用队列思想,一边进一边出,先进先出,选择双向队列deque(其实queue已经够了,没必要用deque) /* struct TreeNode { int val; struc ...
- [leetcode]剑指offer32-1.从上到下打印二叉树
从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印. 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / 9 20 / 15 7 返回: [3,9,20,1 ...
- 剑指offer23 从上往下打印二叉树
另一种写法,不用deque class Solution { public:vector<int> PrintFromTopToBottom(TreeNode* root) {vector ...
- 剑指offer:按之字形打印二叉树(栈|双向队列+中序遍历)
1. 题目描述 /**请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. */ 2. 双向队列 /*思路: ...
- 剑指offer之按之字形打印二叉树
题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 解题思路 层次序遍历,然后存储到vector ...
- 链表怎么输出最后一个元素无空格_剑指offer系列----从尾到头打印链表
从尾到头打印链表 信息卡片 时间:2020-03-23 题目:从尾到头打印链表 tag:list 题目描述 输入一个链表,按链表从尾到头的顺序返回一个 ArrayList. 01 调用 reverse ...
- 【最佳解法】剑指 Offer 32 - III. 从上到下打印二叉树 III
立志用最少的代码做最高效的表达 请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推. 例如: 给定二叉 ...
最新文章
- python代码需要背吗-20个Python代码段,你需要立刻学会,好用到哭!
- python web为什么不火-Python这么火,为何有人说Python不好找工作?
- Spring5源码 - 05 invokeBeanFactoryPostProcessors 源码解读_2
- Java编程基础篇第四章
- Module build failed (from ./node_modules/babel-loader/lib/index.js) 错误解决
- 元宇宙行业深度研究报告:为什么元宇宙是下一代互联网?
- 防腐投加器需要加盐吗_果干、果脯、蜜钱、水果脆片,哪个有营养?你吃对了吗?...
- ListView常用属性、方法
- Jsoncpp 使用方法大全
- 定了!这 35 所高校将设人工智能本科专业!
- opencv图像直方图的计算及绘制
- 极速PDF打开文件后工具栏不显示怎么办
- GitHub 中国区前 100 名到底是什么样的人?
- C# 判断是否是节假日
- 【Azure 应用服务】NodeJS Express + MSAL 应用实现AAD登录并获取AccessToken -- cca.acquireTokenByCode(tokenRequest)
- app渗透之Burp抓取app数据包
- 跳槽时,这些Java面试题必须会,99%会被问到!
- 神仙程序媛小姐姐的一些列Java教程,从小白到进阶,春招和秋招必备的面试题,全站式保姆的Java教程导航帖(未完结)
- VR室内装修设计给客户不一样体验和效果
- Eyeshot Fem 2022.436 Crack