Flatten Binary Tree to Linked List https://leetcode.com/problems/flatten-binary-tree-to-linked-list/?tab=Description
Recursively Post-Order Flattening
- h,t = flatten_left_subtree
- h1,t1 = flatten_right_subtree
- Now merge with the root using cases where h is None, h1 is None or both are None, or both are non None.
- Make sure to set root.left as None
class Solution(object): def flatten(self, root): """ :type root: TreeNode :rtype: void Do not return anything, modify root in-place instead. """ self.flatten_helper(root) return def flatten_helper(self, root): if root == None: return None, None h,t = self.flatten_helper(root.left) h1,t1 = self.flatten_helper(root.right) root.left = None if h and h1: root.right = h t.right = h1 return root, t1 elif h == None and h1: root.right = h1 return root, t1 elif h1 == None and h: root.right = h return root, t else: return root, root