Maximum Width of Binary Tree

LeetCode 662

class Solution:
    def widthOfBinaryTree(self, root):
        """
        :type root: TreeNode
        :rtype: int
        """
        self.res = 1
        self.dfs(root, 1, 1, [])
        return self.res

    def dfs(self, root, level, index, start):
        if not root: return
        """
        start = [] [1] [1,2] [1,2,4]
        level = 0   1    2      3
    
        """
        if len(start) < level:
            start.append(index)
        else:
            self.res = max(self.res, index - start[level-1] + 1)
            
        self.dfs(root.left, level + 1, index * 2, start)
        self.dfs(root.right, level + 1, index * 2 + 1, start)

Last updated