File tree Expand file tree Collapse file tree 1 file changed +34
-0
lines changed
my-folder/problems/convert_sorted_array_to_binary_search_tree Expand file tree Collapse file tree 1 file changed +34
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * Definition for a binary tree node.
3
+ * struct TreeNode {
4
+ * int val;
5
+ * struct TreeNode *left;
6
+ * struct TreeNode *right;
7
+ * };
8
+ */
9
+ struct TreeNode * sortedArrayToBST (int * nums , int numsSize ) {
10
+ if (numsSize == 0 ) {
11
+ return 0 ;
12
+ }
13
+
14
+ struct TreeNode * node = malloc (sizeof (struct TreeNode ));
15
+ if (numsSize == 1 ) {
16
+ node -> val = * nums ;
17
+ node -> left = 0 ;
18
+ node -> right = 0 ;
19
+ return node ;
20
+ }
21
+
22
+ int half_idx = numsSize / 2 ;
23
+
24
+ // Set the middle number to the node's value
25
+ node -> val = nums [half_idx ];
26
+ // printArr(nums, half_idx);
27
+ // printArr(nums + half_idx + 1, numsSize - (half_idx + 1));
28
+ // Sort all numbers up to but not including the middle number
29
+ node -> left = sortedArrayToBST (nums , half_idx );
30
+ // Sort all numbers after the middle number
31
+ node -> right = sortedArrayToBST (nums + half_idx + 1 , numsSize - (half_idx + 1 ));
32
+
33
+ return node ;
34
+ }
You can’t perform that action at this time.
0 commit comments