# 366 Find Leaves of Binary Tree

Given the `root` of a binary tree, collect a tree's nodes as if you were doing this:

• Collect all the leaf nodes.
• Remove all the leaf nodes.
• Repeat until the tree is empty.

Example 1:

``````    1
/ \          1
2   3   =>   /    =>   1
/ \          2
4   5

Input: root = [1,2,3,4,5]
Output: [[4,5,3],,]
Explanation:
[[3,5,4],,] and [[3,4,5],,] are also considered correct answers
since per each level it does not matter the order on which elements are returned.
``````

Example 2:

``````Input: root = 
Output: []
``````

Constraints:

• The number of nodes in the tree is in the range `[1, 100]`.
• `-100 <= Node.val <= 100`
 `````` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 `````` ``````# 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: Optional[TreeNode]) -> List[List[int]]: def dfs(node: Optional[TreeNode]) -> int: if not node: return 0 cur_level = max(dfs(node.left), dfs(node.right)) + 1 d[cur_level].append(node.val) return cur_level d = defaultdict(list) dfs(root) return [vals for _, vals in sorted(d.items(), key=lambda n: n)]``````