Skip to content

Commit a09f3f7

Browse files
author
Victor
authored
Pre-order traversal.
1 parent f378956 commit a09f3f7

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed
+65
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
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+
*/

0 commit comments

Comments
 (0)