当前位置:网站首页>LeetCode 103. Binary tree zigzag level order transverse - Binary Tree Series Question 5
LeetCode 103. Binary tree zigzag level order transverse - Binary Tree Series Question 5
2022-07-06 02:16:00 【CP Coding】
Given the root
of a binary tree, return the zigzag level order traversal of its nodes' values. (i.e., from left to right, then right to left for the next level and alternate between).
Example 1:
Input: root = [3,9,20,null,null,15,7] Output: [[3],[20,9],[15,7]]
Example 2:
Input: root = [1] Output: [[1]]
Example 3:
Input: root = [] Output: []
Constraints:
- The number of nodes in the tree is in the range
[0, 2000]
. -100 <= Node.val <= 100
The title requires level Z Traverse the whole binary tree in font order , That is, in behavioral units , A line from left to right , The next line is from right to left , In this way, the binary tree is traversed alternately .
If you are familiar with the horizontal traversal binary tree algorithm , This question is relatively simple . I think about it , utilize BFS The algorithm traverses in behavioral units . Define a queue queue, Put the whole row of nodes into the queue each time , In each cycle, all nodes in the current queue ( That is, the nodes of the whole line ) Take out one by one , Put the values into a temporary array , Then take out the left and right child nodes of the node ( If it exists ) Put it in the queue . As required Z Font type , Every other row needs to reverse the temporary array . Finally, add all the numbers of the temporary array to the answer array .
class Solution:
def zigzagLevelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
if not root:
return []
res = []
l2r = True
q = deque([root])
while q:
n = len(q)
level = []
for i in range(n):
node = q.popleft()
level.append(node.val)
if node.left:
q.append(node.left)
if node.right:
q.append(node.right)
if l2r:
l2r = False
else:
l2r = True
level.reverse()
res.append(level)
return res
边栏推荐
- Spark accumulator
- Minecraft 1.18.1、1.18.2模组开发 22.狙击枪(Sniper Rifle)
- Jisuanke - t2063_ Missile interception
- Redis list
- SPI communication protocol
- 同一个 SqlSession 中执行两条一模一样的SQL语句查询得到的 total 数量不一样
- Shutter doctor: Xcode installation is incomplete
- Sword finger offer 12 Path in matrix
- Know MySQL database
- How to set an alias inside a bash shell script so that is it visible from the outside?
猜你喜欢
Campus second-hand transaction based on wechat applet
2022年PMP项目管理考试敏捷知识点(8)
02. Go language development environment configuration
The intelligent material transmission system of the 6th National Games of the Blue Bridge Cup
Leetcode sum of two numbers
1. Introduction to basic functions of power query
[flask] official tutorial -part2: Blueprint - view, template, static file
NiO related knowledge (II)
[width first search] Ji Suan Ke: Suan tou Jun goes home (BFS with conditions)
Online reservation system of sports venues based on PHP
随机推荐
Lecture 4 of Data Engineering Series: sample engineering of data centric AI
插卡4G工业路由器充电桩智能柜专网视频监控4G转以太网转WiFi有线网速测试 软硬件定制
[community personas] exclusive interview with Ma Longwei: the wheel is not easy to use, so make it yourself!
leetcode-两数之和
Redis如何实现多可用区?
Minecraft 1.18.1, 1.18.2 module development 22 Sniper rifle
leetcode-2. Palindrome judgment
[eight part essay] what is the difference between unrepeatable reading and unreal reading?
Apicloud openframe realizes the transfer and return of parameters to the previous page - basic improvement
Redis list
[flask] official tutorial -part2: Blueprint - view, template, static file
RDD conversion operator of spark
Xshell 7 Student Edition
TrueType字体文件提取关键信息
How to use C to copy files on UNIX- How can I copy a file on Unix using C?
Sword finger offer 12 Path in matrix
Virtual machine network, networking settings, interconnection with host computer, network configuration
抓包整理外篇——————状态栏[ 四]
RDD partition rules of spark
NiO related knowledge (II)