LeetCode Algorithm 103. 二叉树的锯齿形层序遍历

Posted Alex_996

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode Algorithm 103. 二叉树的锯齿形层序遍历相关的知识,希望对你有一定的参考价值。

103. 二叉树的锯齿形层序遍历

Ideas

首先得理解二叉树的层序遍历,它类似于广度优先搜索,在当前层搜索的时候,遍历到的每一个节点都要把它的所有孩子节点都添加到队列中。

然后我们要锯齿形遍历,可以定义一个order变量,如果为True表示从左往右遍历,如果为False表示从右往左遍历,每次遍历完取反。

Code

Python

from collections import deque
from typing import List


# Definition for a binary tree node.
class TreeNode:
	def __init__(self, val=0, left=None, right=None):
		self.val = val
		self.left = left
		self.right = right


class Solution:
	def zigzagLevelOrder(self, root: TreeNode) -> List[List[int]]:
		if not root:
			return []
		
		queue = deque()
		queue.append(root)
		order, ans = True, []
		
		while queue:
			level = []
			for i in range(len(queue)):
				node = queue.popleft()
				level.append(node.val)
				if node.left:
					queue.append(node.left)
				if node.right:
					queue.append(node.right)
			ans.append(level if order else level[::-1])
			order = not order
		return ans

以上是关于LeetCode Algorithm 103. 二叉树的锯齿形层序遍历的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 103 二叉树的锯齿形层次遍历 以及 LinkedList

LeetCode-103-二叉树的锯齿形层序遍历

LeetCode 103. 二叉树的锯齿形层次遍历(Binary Tree Zigzag Level Order Traversal)

leetcode 103. 二叉树的锯齿形层次遍历

leetcode103二叉树的锯齿形层序遍历

LeetCode第103题—二叉树的锯齿形层序遍历—Python实现