首页 > 其他 > 详细

[Leetcode] Convert Sorted List to Binary Search Tree

时间:2014-04-04 08:32:30      阅读:521      评论:0      收藏:0      [点我收藏+]

Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.

跟上一题一样,只是数据结构换成了链表,这里求链表的中位数还是乖乖用len先计算长度吧,用slow、fast指针还得先标记尾指针,反而更麻烦。

bubuko.com,布布扣
 1 /**
 2  * Definition for singly-linked list.
 3  * struct ListNode {
 4  *     int val;
 5  *     ListNode *next;
 6  *     ListNode(int x) : val(x), next(NULL) {}
 7  * };
 8  */
 9 /**
10  * Definition for binary tree
11  * struct TreeNode {
12  *     int val;
13  *     TreeNode *left;
14  *     TreeNode *right;
15  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
16  * };
17  */
18 class Solution {
19 public:
20     void buildTree(TreeNode *&root, ListNode *head, int len) {
21         if (len <= 0) return;
22         ListNode *mid = head;
23         for (int i = 0; i < len / 2; ++i) {
24             mid = mid->next;
25         }
26         root = new TreeNode(mid->val);
27         ListNode *head2 = mid->next;
28         mid = NULL;
29         buildTree(root->left, head, len / 2);
30         buildTree(root->right, head2, (len - 1) / 2);
31     }
32     
33     TreeNode *sortedListToBST(ListNode *head) {
34         int len = 0;
35         for (ListNode *p = head; p!= NULL; p = p->next) {
36             ++len;
37         }
38         TreeNode *root = NULL;
39         buildTree(root, head, len);
40         return root;
41     }
42 };
bubuko.com,布布扣

 

[Leetcode] Convert Sorted List to Binary Search Tree,布布扣,bubuko.com

[Leetcode] Convert Sorted List to Binary Search Tree

原文:http://www.cnblogs.com/easonliu/p/3644316.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!