トピック:
剣はオファー32-IIIを指し、バイナリツリーを上から下に印刷しますIII
二分木をジグザグに印刷する機能を実装してください。つまり、最初の行は左から右に印刷され、2番目のレイヤーは右から左に印刷され、3番目の行は左から右に印刷されます。オン。
例:
二分木がある場合:[3,9,20、null、null、15,7]、
レベルトラバーサルの結果を返します。
[
[3]、
[20,9]、
[15,7]
]
促す:
ノードの総数<= 1000
問題解決のアイデア:
バイナリツリーは、リストを使用するだけでレイヤーごとにトラバースされ、各レイヤーはパリティごとに並べ替えられます。
問題解決のPythonコード:
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def levelOrder(self, root: TreeNode) -> List[List[int]]:
if not root: return []
ans, queue = [], collections.deque()
queue.append(root) #初始化queue为root
while queue:
temp = [] #定义层输出列表
for _ in range(len(queue)):
node = queue.popleft() #取出queue最左的元素,并在queue添加左右子树
if node.left: queue.append(node.left)
if node.right: queue.append(node.right)
temp.append(node.val) #层输出列表添加node的值
ans.append(temp[::-1] if len(ans)%2!=0 else temp) #按照ans的长度的奇偶情况,判断是否需要逆序
return ans
著者:a-qing-ge
リンク:https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof/solution/dan-chun-li -yong-lie-biao-dui-er-cha-shu-gjgu /
出典:LeetCode(LeetCode)https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha -shu-iii-lcof /