Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 5903b79

Browse files
Add C++ implementation
Signed-off-by: begeekmyfriend <begeekmyfriend@gmail.com>
1 parent c69b910 commit 5903b79

File tree

2 files changed

+53
-3
lines changed

2 files changed

+53
-3
lines changed

‎0109_convert_sorted_list_to_binary_search_tree/bst_convert.c‎

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#include <stdio.h>
22
#include <stdlib.h>
33

4+
45
struct ListNode {
56
int val;
67
struct ListNode *next;
@@ -12,13 +13,13 @@ struct TreeNode {
1213
struct TreeNode *right;
1314
};
1415

15-
static struct TreeNode *traverse(int *nums, int lo, int hi)
16+
static struct TreeNode *dfs(int *nums, int lo, int hi)
1617
{
1718
int mid = lo + (hi - lo) / 2;
1819
struct TreeNode *node = malloc(sizeof(*node));
1920
node->val = nums[mid];
20-
node->left = mid > lo ? traverse(nums, lo, mid - 1) : NULL;
21-
node->right = mid < hi ? traverse(nums, mid + 1, hi) : NULL;
21+
node->left = mid > lo ? dfs(nums, lo, mid - 1) : NULL;
22+
node->right = mid < hi ? dfs(nums, mid + 1, hi) : NULL;
2223
return node;
2324
}
2425

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
#include <bits/stdc++.h>
2+
3+
using namespace std;
4+
5+
/**
6+
* Definition for singly-linked list.
7+
* struct ListNode {
8+
* int val;
9+
* ListNode *next;
10+
* ListNode() : val(0), next(nullptr) {}
11+
* ListNode(int x) : val(x), next(nullptr) {}
12+
* ListNode(int x, ListNode *next) : val(x), next(next) {}
13+
* };
14+
*/
15+
/**
16+
* Definition for a binary tree node.
17+
* struct TreeNode {
18+
* int val;
19+
* TreeNode *left;
20+
* TreeNode *right;
21+
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
22+
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
23+
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
24+
* };
25+
*/
26+
class Solution {
27+
public:
28+
TreeNode *sortedListToBST(ListNode* head) {
29+
if (head == nullptr) {
30+
return NULL;
31+
} else if (head->next == nullptr) {
32+
return new TreeNode(head->val);
33+
} else {
34+
ListNode *fast = head;
35+
ListNode *slow = head;
36+
ListNode *last = slow;
37+
while (fast != nullptr && fast->next != nullptr) {
38+
last = slow;
39+
slow = slow->next;
40+
fast = fast->next->next;
41+
}
42+
last->next = nullptr;
43+
TreeNode *node = new TreeNode(slow->val);
44+
node->left = sortedListToBST(head);
45+
node->right = sortedListToBST(slow->next);
46+
return node;
47+
}
48+
}
49+
};

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /