[Leetcode Series] [algorithm] [medium] level serrated binary tree traversal

topic:

Topic links:  https://leetcode-cn.com/problems/binary-tree-zigzag-level-order-traversal/

 

Problem-solving ideas:

Similar sequence binary tree traversal method of a logic inversion need only after the odd elements are added to the result set

 

Code:

# 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

 

 

Published 100 original articles · won praise 4 · Views 1458

Guess you like

Origin blog.csdn.net/songyuwen0808/article/details/105401147