366. Find Leaves of Binary Tree
https://github.com/openset/leetcode/tree/master/problems/find-leaves-of-binary-tree
https://leetcode.com/problems/find-leaves-of-binary-tree/
https://www.lintcode.com/problem/find-leaves-of-binary-tree/description
Given a binary tree, collect a tree's nodes as if you were doing this: Collect and remove all leaves, repeat until the tree is empty.
Example:
Input: [1,2,3,4,5] 1 / \ 2 3 / \ 4 5 Output: [[4,5,3],[2],[1]]
Explanation:
1. Removing the leaves [4,5,3]
would result in this tree:
1 / 2
2. Now removing the leaf [2]
would result in this tree:
1
3. Now removing the leaf [1]
would result in the empty tree:
[]-----
Intuition
Need info from both left, and right child to determine if current node is leaf node
Post Order DFS
Consider looking up the tree from below where the level is determined as the height from below
Terminate recursion when node is null, return -1 so it can contribute to level 0
level = max(left, right) + 1
if level == ans.size()
ans.add(new ArrayList<Integer>())
ans.add(node.val)
node.left = node.right = null
return level
---
Time - O(N)
Space- O(N) - worst case, skewed tree
---
Related problems
---