二叉树高度的代码解析_剑指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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/520518.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue 快速集成ElementUI

App.vue作为Vue项目的主窗口<router-view></router-view>让路由生效 main.js负责加载插件组件等 views&#xff1a;放页面 components&#xff1a;放组件 router&#xff1a;路由配置&#xff1a;相当于springmvc的视图解析器将url和组件进行关联Element UI 后台管…

双11个性化推荐背后,阿里云“舜天”如何应对百亿次挑战?

2018天猫双11在技术世界&#xff0c;创下不少新记录&#xff0c;其中有一个记录是11日当天阿里全平台共为用户做个性化推荐453亿次&#xff0c;这些推荐的图片长度加起来可以绕地球70圈。 当你在天猫/手淘上买买买的时&#xff0c;图片会以不同格式或分辨率来转码呈现&#xf…

重磅发布!阿里云推PostgreSQL 10 高可用版

2015年&#xff0c;阿里云宣布正式推出RDS for PostgreSQL服务,届时&#xff0c;阿里云成为国内首家同时支持MySQL、SQL Server 和PostgreSQL关系型数据库的云计算服务商。 用户在云上就能享受PostgreSQL引擎带来的对SQL标准和NoSQL的高度兼容、强大的处理复杂查询能力、以及丰…

axios专栏

axios 基于promise用于浏览器和node.js的http客户端 支持浏览器和node.js 支持promise 能拦截请求和响应 自动转换JSON数据 能转换请求和响应 数据 axios基础用法 get和 delete请求传递参数 通过传统的url 以 ? 的形式传递参数 restful形式传递参数 通过params 形式传递参数…

表示自己从头开始的句子_从头开始的唯美句子

1、你有力气挣扎在自己的现状里&#xff0c;却没勇气跳出自己的生活&#xff0c;重新开始。2、亲爱的&#xff0c;不必去追悔过去。人生就像摩天轮&#xff0c;总有那么一刻&#xff0c;天空&#xff0c;会为你而停留。3、找不到坚持下去的理由&#xff0c;那就找一个重新开始的…

【双11】阿里云边缘节点ENS助力淘宝构建音视频通信网络

前言 淘宝在2016年推出直播平台&#xff0c;和娱乐直播性质不同&#xff0c;电商直播的主角多为网红店铺及网红达人&#xff0c;以直播带动产品售卖。在淘宝的双11流量加持之下&#xff0c;淘宝直播平台关注度持续攀升&#xff0c;通常的网红店主一场直播带来的收益不亚于一场…

护航Lazada双11购物节 阿里云CDN全球化火力全开

2018年11月12日零点——东南亚最大的电子商务公司Lazada 2018双11购物节正式收官。这是一场超过2000万的消费者在Lazada网站上及APP上浏览和疯狂抢购的盛会。 Lazada是东南亚最大B2C平台&#xff0c;业务范围覆盖印度尼西亚、马来西亚、菲律宾、新加坡、泰国和越南六个东南亚国…

plink源码_plink: 等位型计数(allele count)

对genotype的等位型进行计数&#xff0c;需要用到以下参数&#xff1a;--freq Allele frequencies--countsModifies --freq to report actual allele counts具体用法如下命令&#xff1a;/plink-1.07-x86_64/plink --freq --counts --noweb --bfile file --make-bed --out file…

AI行业真实现状:做芯片没工作,做视觉、语音血赚

最近&#xff0c;深圳前瞻产品研究院发布了《2019年人工智能行业现状和发展趋势报告》&#xff0c;笔者看过之后&#xff0c;感觉真是用了心&#xff0c;这不仅是一份数据报告&#xff0c;更像一本“扫盲手册”。众人皆知&#xff0c;AI血赚&#xff0c;当我们谈人工智能&#…

JSON数据从OSS迁移到MaxCompute最佳实践

本文为您介绍如何利用DataWorks数据集成将JSON数据从OSS迁移到MaxCompute&#xff0c;并使用MaxCompute内置字符串函数GET_JSON_OBJECT提取JSON信息。 数据上传OSS 将您的JSON文件重命名后缀为TXT文件&#xff0c;并上传到OSS。本文中使用的JSON文件示例如下。 {"store&…

java使用String的split()方法数组下标越界问题

今天做练习的时候使用String的split(",")方法在控制台进行信息截取&#xff0c;一开始出现数组下标越界的提示我就去用for循环遍历了一下&#xff0c;有三个片段的输出信息&#xff0c;然后我网上查了说有以下几种情况&#xff1a; 1.代码编码和控制台中文编码不一致…

在MaxCompute上分析IP来源的方法

淘宝IP库 淘宝IP地址库官网地址http://ip.taobao.com/&#xff0c;其查询接口[http://ip.taobao.com/service/getIpInfo.php?ip[ip地址字串]](http://ip.taobao.com/service/getIpInfo.php?ip[ip地址字串])&#xff0c;如下所示&#xff1a; 但是在MaxCompute中禁止使用http…

egg直接取req_Egg服务器基础功能

1. 框架约定目录规则1.1 app/router.js&#xff1a;用于配置URL路由规则&#xff1b;1.2 app/controller/** &#xff1a;用于解析用户的输入&#xff0c;处理后返回相应的结果&#xff1b;1.3 app/service/**&#xff1a; 用于编写业务逻辑层&#xff1b;1.4 app/public/**&am…

我和 Spring 大神的一天

先介绍一下故事的5位主人公。 Josh Long 龙之春&#xff1a; Spring 技术布道师&#xff0c;撰写过5部著作&#xff0c;录制过3部畅销的培训视频&#xff0c;是一位开源软件贡献者。 Spencer Gibb&#xff1a; Spring 技术布道师&#xff0c;Spring Cloud核心项目的联合创始人…

Android开发中解决自定义弹窗获取不到控件对象的问题

最近做期末作业的时候遇到一个功能需要在弹窗里修改账号密码&#xff0c;弹窗里面含有两个edittext控件&#xff0c;经过查阅资料我通过setView添加了一个view在弹窗里实现了&#xff0c;但是获取的控件对象一直为空导致我取不到输入的值&#xff0c;找了好久的错误原来获取对象…

是什么样的骚操作让应用上线节省90%的时间

优秀的程序员 总会想着 如何把花30分钟才能解决的问题 在5分钟内就解决完 例如在应用上线这件事上 通常的做法是 1. 构建项目 在本地用maven打包 每次需要clean一次&#xff0c;再build一次 2. 部署包 在本地ide、git/svn、maven/gradie 及代码仓库、镜像仓库和云平…

华为鸿蒙宣传悟空视频_华为自研鸿蒙系统定档9月?《悟空》微电影透露玄机...

【手机中国新闻】“六一”期间&#xff0c;由蔡成杰导演使用华为P30 Pro零外接镜头拍摄的竖屏电影——《悟空》引起网友热议。这部电影的精神内核在于孙悟空拥有十八般武艺&#xff0c;不畏艰险&#xff0c;敢与“恶势力”斗争。但是真正让网友们关注的是电影中出现了一个特别的…

阿里程序员工作小技巧 | 理解CPU分支预测,提高代码效率

技术传播的价值&#xff0c;不仅仅体现在通过商业化产品和开源项目来缩短我们构建应用的路径&#xff0c;加速业务的上线速率&#xff0c;也会体现在优秀程序员在工作效率提升、产品性能优化和用户体验改善等小技巧方面的分享&#xff0c;以提高我们的工作能力。 从本期开始&am…