【leetcode系列】【算法】【中等】二叉树的锯齿形层次遍历

题目:

题目链接: https://leetcode-cn.com/problems/binary-tree-zigzag-level-order-traversal/

解题思路:

类似二叉树的层序遍历方法一的逻辑,只是需要对奇数层元素进行反转后再加入到结果集中

代码实现:

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

class Solution:
    def zigzagLevelOrder(self, root: TreeNode) -> List[List[int]]:
        if not root:
            return []
        
        res = []
        stack = [root]
        level = 0
        while stack:
            val_lst = []
            for _ in range(len(stack)):
                node = stack[0]
                stack.pop(0)
                val_lst.append(node.val)
                if node.left:
                    stack.append(node.left)
                    
                if node.right:
                    stack.append(node.right)
                    
            if level == 1:
                val_lst.reverse()
                
            res.append(val_lst)
            level ^= 1
            
        return res
发布了100 篇原创文章 · 获赞 4 · 访问量 1458

猜你喜欢

转载自blog.csdn.net/songyuwen0808/article/details/105401147
今日推荐