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_head
Run Time: 60 msSolution 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 = root
Run Time: 60 ms
No comments:
Post a Comment