Min-Hsueh Chiu

Logo

  • Projects
  • Publications
  • Blog
  • CV
  • Random things
  • Theme by orderedlist

    I struggle to grasp dietpepsi's concise O(1) space complexity algorithm. I've utilized the following visualization to analyze each step systematically to comprehend it fully.


    Key Points:

    1. Use BFS to traverse the tree.
    2. In BFS traversal, consider each level as a linked list problem. Utilize a "tail" and a "dummy" node to handle the child layer.


    """
    # Definition for a Node.
    class Node:
        def __init__(self, val: int = 0, left: 'Node' = None, right: 'Node' = None, next: 'Node' = None):
            self.val = val
            self.left = left
            self.right = right
            self.next = next
    """
    class Solution:
        def connect(self, node: 'Node') -> 'Node':
            """
            if there is parent node
            BFS
            """
            root = node
            tail = dummy = Node(0)
            while node:
                tail.next = node.left
                if tail.next:
                    tail = tail.next
                tail.next = node.right
                if tail.next:
                    tail = tail.next
                node = node.next
                if not node:
                    tail = dummy
                    node = dummy.next
            return(root)