-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy path114.flatten-binary-tree-to-linked-list.py
89 lines (65 loc) · 2.34 KB
/
114.flatten-binary-tree-to-linked-list.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
from lc import *
# https://leetcode.com/problems/flatten-binary-tree-to-linked-list/discuss/1208004/Extremely-Intuitive-O(1)-Space-solution-with-Simple-explanation-Python
class Solution:
def flatten(self, root: Optional[TreeNode]) -> None:
curr = root
while curr:
if curr.left != None:
p = curr.left
while p.right != None:
p = p.right
p.right = curr.right
curr.right = curr.left
curr.left = None
curr = curr.right
# https://leetcode.com/problems/flatten-binary-tree-to-linked-list/discuss/274723/5-line-python-recursive
class Solution:
def flatten(self, root: Optional[TreeNode]) -> None:
if not root: return None
right, root.left, root.right = root.right, None, root.left
end = self.flatten(root.right) if root.right else root
end.right = right
return self.flatten(right) if right else end
# https://leetcode.com/problems/flatten-binary-tree-to-linked-list/discuss/1549901/7-lines-python-solution
class Solution:
def flatten(self, t: Optional[TreeNode]) -> None:
self.pre = None
def f(t):
if t:
f(t.right)
f(t.left)
t.right= self.pre
t.left = None
self.pre = t
f(t)
class Solution:
def flatten(s, t: Optional[TreeNode]) -> None:
a=setattr;s.p=None;(f:=lambda t:t and(f(t.right),f(t.left),a(t,'right',s.p),a(t,'left',None),a(s,'p',t)))(t)
test('''
114. Flatten Binary Tree to Linked List
Medium
12396
566
Add to List
Share
Given the root of a binary tree, flatten the tree into a "linked list":
The "linked list" should use the same TreeNode class where the right child pointer points to the next node in the list and the left child pointer is always null.
The "linked list" should be in the same order as a pre-order traversal of the binary tree.
Example 1:
Input: root = [1,2,5,3,4,null,6]
Output: [1,null,2,null,3,null,4,null,5,null,6]
Example 2:
Input: root = []
Output: []
Example 3:
Input: root = [0]
Output: [0]
Constraints:
The number of nodes in the tree is in the range [0, 2000].
-100 <= Node.val <= 100
Follow up: Can you flatten the tree in-place (with O(1) extra space)?
Accepted
1,027,560
Submissions
1,550,005
''', inplace=True)