1. 程式人生 > 其它 >【leetcode】103:二叉樹的鋸齒形層序遍歷

【leetcode】103:二叉樹的鋸齒形層序遍歷

這個題目和leetcode102的題目非常類似,我們只需要對leetcode102的程式碼稍作修改就可以得到最終的答案了,我們來看看leetcode102的程式碼:

class Solution:
    def levelOrder(self, root: TreeNode) -> List[List[int]]:
        if not root: return []
        res = []
        queue = [root]
        while queue:
            tmp = []
            for _ in range(len(queue)):
                node 
= queue.pop(0) tmp.append(node.val) if node.left: queue.append(node.left) if node.right: queue.append(node.right) res.append(tmp) return res

我們修改後的程式碼為:

# 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 [] res = [] queue
= [root] i=0 while queue: tmp = [] for _ in range(len(queue)): node = queue.pop(0) tmp.append(node.val) if node.left: queue.append(node.left) if node.right: queue.append(node.right) if i%2==0: res.append(tmp) else: tmp.reverse() res.append(tmp) i+=1 return res

也就是在偶數層,對tmp這個list進行逆序輸出,對於python的知識點也就是使用reverse方法對list進行逆序就可以了。