LC 0366 [M] Find Leaves of Binary Tree - ALawliet/algorithms GitHub Wiki

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def findLeaves(self, root: 'TreeNode') -> 'List[List[int]]':
        levels = []
        
        def dfs(node):
            if not node: return -1
            
            L = dfs(node.left)
            R = dfs(node.right)
            
            height = max(L, R) + 1 # depth/height/vertical distance from bottom
            
            if height >= len(levels):
                levels.append([])
                
            levels[height].append(node.val)
            
            return height
        
        dfs(root)
        return levels