欢迎光临散文网 会员登陆 & 注册

Leetcode Day13 4

2022-04-14 21:02 作者:我喜欢喝一点点  | 我要投稿

剑指 Offer 32 - III. 从上到下打印二叉树 III

请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。


 


例如:

给定二叉树: [3,9,20,null,null,15,7],


    3

   / \

  9  20

    /  \

   15   7

返回其层次遍历结果:


[

  [3],

  [20,9],

  [15,7]

]


在前面一题的基础上加个层数的判断就可以啦,然后用[::-1]反转(我试了试Reverse会报错)

# 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[int]:

        if not root:return []

        res=[]

        q=[]

        q.append(root)

        layer=1

        while q:

            tmp=[]

            l=len(q)

            for i in range(l):

                node=q.pop(0)

                tmp.append(node.val)

                if node.left:

                    q.append(node.left)

                if node.right:

                    q.append(node.right)

            if layer&1==0:

                tmp=tmp[::-1]

            res.append(tmp)

            layer+=1

        return res



Leetcode Day13 4的评论 (共 条)

分享到微博请遵守国家法律