File tree 1 file changed +65
-0
lines changed
1 file changed +65
-0
lines changed Original file line number Diff line number Diff line change
1
+ /*
2
+ 114. Flatten Binary Tree to Linked List
3
+
4
+ Given a binary tree, flatten it to a linked list in-place.
5
+
6
+ For example, given the following tree:
7
+
8
+ 1
9
+ / \
10
+ 2 5
11
+ / \ \
12
+ 3 4 6
13
+
14
+
15
+ The flattened tree should look like:
16
+
17
+ 1
18
+ \
19
+ 2
20
+ \
21
+ 3
22
+ \
23
+ 4
24
+ \
25
+ 5
26
+ \
27
+ 6
28
+ */
29
+
30
+ /**
31
+ * Definition for a binary tree node.
32
+ * struct TreeNode {
33
+ * int val;
34
+ * struct TreeNode *left;
35
+ * struct TreeNode *right;
36
+ * };
37
+ */
38
+ struct TreeNode * preOrderTraversal (struct TreeNode * prev , struct TreeNode * node ) {
39
+ struct TreeNode * left , * right ;
40
+
41
+ if (!node ) return prev ;
42
+
43
+ left = node -> left ;
44
+ right = node -> right ;
45
+ node -> left = node -> right = NULL ;
46
+
47
+ prev -> right = node ;
48
+ prev = node ;
49
+
50
+ prev = preOrderTraversal (prev , left ); // it's import to update prev
51
+ prev = preOrderTraversal (prev , right );
52
+
53
+ return prev ;
54
+ }
55
+ void flatten (struct TreeNode * root ) {
56
+ struct TreeNode head = { 0 };
57
+ preOrderTraversal (& head , root );
58
+ }
59
+
60
+
61
+ /*
62
+ Difficulty:Medium
63
+
64
+
65
+ */
You can’t perform that action at this time.
0 commit comments