In [2]:
1
from binarytree import Node, build
114. Flatten Binary Tree to Linked List
2 step solution
[cur, cur.left, cur.right]
order traversal to store the right linked list.- flatten given tree from root by using the stored list.
Let $ | V | $ be $n$, the time complexity is $O(n)$ |
In [3]:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Solution:
def flatten(self, root: Node) -> None:
"""
Do not return anything, modify root in-place instead.
"""
order = []
def func(cur:Node):
if not cur:
return
order.append(cur)
func(cur.left)
func(cur.right)
func(root)
now = order[0]
for x in order[1:]:
now.right = x
now.left = None
now = now.right
sol = Solution()
In [6]:
1
2
3
4
5
6
null = None
A = [1,2,5,3,4,null,6]
root = build(A)
root.pprint()
sol.flatten(root)
root.pprint()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
__1
/ \
2 5
/ \ \
3 4 6
1
\
2
\
3
\
4
\
5
\
6
Leave a comment