当前位置:网站首页>[daiy5] jz77 print binary tree in zigzag order
[daiy5] jz77 print binary tree in zigzag order
2022-07-07 10:29:00 【strawberry47】
subject :
Given a binary tree , Returns the zigzag of the binary tree ,( The first floor is from left to right , The next floor is from right to left , All the time )
Ideas :
The first idea to get the title is – Use queue , Things stored in odd and even are different ; It won't work ...
Later, I thought of using bilateral queues , According to the situation, which side goes in and out , Find no rules ...
Looking at the answer , It is found that two stacks are used ; There are also queues , Just print it backwards every other layer
according to reverse The idea of , It took me twenty minutes to write the code :
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
answer :
Double stack ( I didn't see clearly ):
import copy
class Solution:
def Print(self , pRoot: TreeNode) -> List[List[int]]:
head = pRoot
res = []
if not head:
# If it's empty , Then return to null directly list
return res
s1, s2 = [], []
# Put it in for the first time
s1.append(head)
while s1 or s2:
temp = []
# Traverse odd layers
while s1:
node = s1[-1]
# Record odd layers
temp.append(node.val)
# Children of odd layers join even layers
if node.left:
s2.append(node.left)
if node.right:
s2.append(node.right)
s1.pop()
# Only add when the array is not empty
if len(temp):
res.append(copy.deepcopy(temp))
# Clear the data of this layer
temp.clear()
# Traverse even layers
while s2:
node = s2[-1]
# Record even layers
temp.append(node.val)
# Children of even layers join odd layers
if node.right:
s1.append(node.right)
if node.left:
s1.append(node.left)
s2.pop()
if len(temp):
res.append(temp)
return res
边栏推荐
- How to cancel automatic saving of changes in sqlyog database
- ThreadLocal会用可不够
- Chris LATTNER, the father of llvm: why should we rebuild AI infrastructure software
- 对word2vec的一些浅层理解
- 求方程ax^2+bx+c=0的根(C语言)
- fiddler-AutoResponder
- 基于gis三维可视化技术的智慧城市建设
- Postman interface test V
- Factorial implementation of large integer classes
- Several schemes of building hardware communication technology of Internet of things
猜你喜欢
LLVM之父Chris Lattner:為什麼我們要重建AI基礎設施軟件
IO模型复习
字符串格式化
Several schemes of building hardware communication technology of Internet of things
Programming features of ISP, IAP, ICP, JTAG and SWD
【acwing】789. 数的范围(二分基础)
Postman interface test VI
Inno Setup 打包及签名指南
How to cancel automatic saving of changes in sqlyog database
基于gis三维可视化技术的智慧城市建设
随机推荐
搭建物联网硬件通信技术几种方案
Programming features of ISP, IAP, ICP, JTAG and SWD
JMeter about setting thread group and time
Experience sharing of software designers preparing for exams
Prototype object in ES6
The Hal library is configured with a general timer Tim to trigger ADC sampling, and then DMA is moved to the memory space.
STM32 Basics - memory mapping
浅谈日志中的返回格式封装格式处理,异常处理
SolidWorks工程图中添加中心线和中心符号线的办法
Use the fetch statement to obtain the repetition of the last row of cursor data
[higherhrnet] higherhrnet detailed heat map regression code of higherhrnet
【HigherHRNet】 HigherHRNet 详解之 HigherHRNet的热图回归代码
Guid主键
Chris LATTNER, the father of llvm: why should we rebuild AI infrastructure software
When there are pointer variable members in the custom type, the return value and parameters of the assignment operator overload must be reference types
table宽度比tbody宽度大4px
【acwing】786. Number k
P1031 [NOIP2002 提高组] 均分纸牌
Kotlin实现微信界面切换(Fragment练习)
Use of JSON extractor originals in JMeter