Obviously, the tree's node goes first, then left and right. So we can solve it recursively or iteratively.
Solution 1:
# T:O(n) S:O(h) class Solution: # @param root, a tree node # @return nothing, do it in place def flatten(self, root): self.flattenRecu(root, None) def flattenRecu(self, root, list_head): if root != None: list_head = self.flattenRecu(root.right, list_head) list_head = self.flattenRecu(root.left, list_head) root.right = list_head root.left = None return root else: return list_headRun Time: 60 ms
Solution 2:
# T:O(n) S:O(h) class Solution: list_head = None # @param root, a tree node # @return nothing, do it in place def flatten(self, root): if root != None: self.flatten(root.right) self.flatten(root.left) root.right = self.list_head root.left = None self.list_head = rootRun Time: 60 ms
No comments:
Post a Comment