当前位置:网站首页>[牛客网刷题 Day5] JZ77 按之字形顺序打印二叉树
[牛客网刷题 Day5] JZ77 按之字形顺序打印二叉树
2022-07-07 08:14:00 【strawberry47】
题目:
给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替)
思路:
拿到题目的第一想法就是–使用队列呀,奇偶的时候存的东西不一样;行不通。。。
后来又想到使用双边队列,分情况从哪边进哪边出,发现找不到什么规律。。。
看了答案,发现用到了两个栈;也有使用队列,只不过每隔一层就反向打印一下
根据reverse的思路,我花了二十分钟写出来了代码:
class Solution:
def Print(self, pRoot: TreeNode):
# write code here
if pRoot is None:
return None
res = []
q = queue.Queue()
q.put(pRoot)
flag = 0
while not q.empty():
cur_res = []
n = q.qsize()
for i in range(n):
node = q.get()
cur_res.append(node.val)
if node.left:
q.put(node.left)
if node.right:
q.put(node.right)
if flag % 2 != 0:
cur_res.reverse()
res.append(cur_res)
flag = flag+1
return res
答案:
双栈(没咋看明白):
import copy
class Solution:
def Print(self , pRoot: TreeNode) -> List[List[int]]:
head = pRoot
res = []
if not head:
# 如果是空,则直接返回空list
return res
s1, s2 = [], []
# 放入第一次
s1.append(head)
while s1 or s2:
temp = []
# 遍历奇数层
while s1:
node = s1[-1]
# 记录奇数层
temp.append(node.val)
# 奇数层的子节点加入偶数层
if node.left:
s2.append(node.left)
if node.right:
s2.append(node.right)
s1.pop()
# 数组不为空才添加
if len(temp):
res.append(copy.deepcopy(temp))
# 清空本层数据
temp.clear()
# 遍历偶数层
while s2:
node = s2[-1]
# 记录偶数层
temp.append(node.val)
# 偶数层的子节点加入奇数层
if node.right:
s1.append(node.right)
if node.left:
s1.append(node.left)
s2.pop()
if len(temp):
res.append(temp)
return res
边栏推荐
- Inno Setup 打包及签名指南
- 2022.7.6DAY598
- Encrypt and decrypt stored procedures (SQL 2008/sql 2012)
- ORM model -- creation and query of data records
- mysql插入数据创建触发器填充uuid字段值
- EasyExcel读取写入简单使用
- 求方程ax^2+bx+c=0的根(C语言)
- Wallys/IPQ6010 (IPQ6018 FAMILY) EMBEDDED BOARD WITH ON-BOARD WIFI DUAL BAND DUAL CONCURRENT
- 2022.7.5DAY597
- [ORM framework]
猜你喜欢

Some thoughts on the testing work in the process of R & D

How to cancel automatic saving of changes in sqlyog database

XML configuration file parsing and modeling

Adb 实用命令(网络包、日志、调优相关)

【acwing】789. 数的范围(二分基础)

The story of Plato and his three disciples: how to find happiness? How to find the ideal partner?

【HigherHRNet】 HigherHRNet 详解之 HigherHRNet的热图回归代码

Word自动生成目录的方法

柏拉图和他的三个弟子的故事:如何寻找幸福?如何寻找理想伴侣?

Remote meter reading, switching on and off operation command
随机推荐
C logging method
How to cancel automatic saving of changes in sqlyog database
Inno Setup 打包及签名指南
IO模型复习
浅谈日志中的返回格式封装格式处理,异常处理
STM32 ADC和DMA
LeetCode 练习——113. 路径总和 II
P1223 排队接水/1319:【例6.1】排队接水
Pdf document signature Guide
ISP、IAP、ICP、JTAG、SWD的编程特点
基于gis三维可视化技术的智慧城市建设
Use the fetch statement to obtain the repetition of the last row of cursor data
【二开】【JeecgBoot】修改分页参数
Guid primary key
Review of the losers in the postgraduate entrance examination
搭建物联网硬件通信技术几种方案
ORM -- query type, association query
ArcGIS operation: converting DWG data to SHP data
Sword finger offer 38 Arrangement of strings [no description written]
Study summary of postgraduate entrance examination in November