当前位置:网站首页>[牛客网刷题 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
边栏推荐
- EasyExcel读取写入简单使用
- 大整数类实现阶乘
- Study summary of postgraduate entrance examination in July
- JMeter installation
- LLVM之父Chris Lattner:為什麼我們要重建AI基礎設施軟件
- table宽度比tbody宽度大4px
- ES6中的原型对象
- [higherhrnet] higherhrnet detailed heat map regression code of higherhrnet
- The Hal library is configured with a general timer Tim to trigger ADC sampling, and then DMA is moved to the memory space.
- 求最大公约数与最小公倍数(C语言)
猜你喜欢

Fiddler simulates the interface test

基于HPC场景的集群任务调度系统LSF/SGE/Slurm/PBS

STM32中AHB总线_APB2总线_APB1总线这些是什么

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

对存储过程进行加密和解密(SQL 2008/SQL 2012)

Prototype object in ES6

【acwing】786. 第k个数

AHB bus in stm32_ Apb2 bus_ Apb1 bus what are these

01 use function to approximate cosine function (15 points)

SolidWorks工程图中添加中心线和中心符号线的办法
随机推荐
Postman interface test I
[ORM framework]
[learning notes - Li Hongyi] Gan (generation of confrontation network) full series (I)
移动端通过设置rem使页面内容及字体大小自动调整
【华为机试真题详解】高矮个子排队
Embedded background - chip
【acwing】789. 数的范围(二分基础)
电表远程抄表拉合闸操作命令指令
[sword finger offer] 42 Stack push in and pop-up sequence
【acwing】786. 第k个数
C logging method
SQLyog数据库怎么取消自动保存更改
The physical meaning of imaginary number J
ORM model -- associated fields, abstract model classes
The request object parses the request body and request header parameters
嵌入式背景知识-芯片
STM32产品介绍
2022.7.6DAY598
Or in SQL, what scenarios will lead to full table scanning
Encrypt and decrypt stored procedures (SQL 2008/sql 2012)