LeetCode Convert Sorted List to Binary Search Tree
来源:互联网 发布:剑三七秀成女捏脸数据 编辑:程序博客网 时间:2024/06/05 19:34
Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.
思路:
可以先将 链表 转换成 数组,然后直接使用 数组那题的代码。
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; *//** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:TreeNode *sortedListToBST(ListNode *head) {vector<int> ivec;while (head) {ivec.push_back(head->val);head = head->next;}return sortedArrayToBST(ivec);}TreeNode *sortedArrayToBST(vector<int> &num) {int n = num.size();if (n == 0)return NULL;TreeNode *head = new TreeNode(num[(n - 1) / 2]);if (n - 3 < 0)head->left = NULL;elsehead->left = creatBST(num, 0, (n - 3) / 2);head->right = creatBST(num, (n + 1) / 2, n - 1);return head;}TreeNode *creatBST(vector<int> &num, int left, int right) {if (right < left)return NULL;int mid = (left + right) / 2;TreeNode *myNode = new TreeNode(num[mid]);myNode->left = creatBST(num, left, mid - 1);myNode->right = creatBST(num, mid + 1, right);return myNode;}};
直接使用链表转化,代码更少。
class Solution {public:TreeNode *sortedListToBST(ListNode *head) {if (head == NULL)return NULL;ListNode *pslow = head, *pa = head, *pb = head->next;while (pb != NULL && pb->next != NULL) {pslow = pa;pa = pa->next;pb = pb->next->next;}TreeNode *root = new TreeNode(pa->val);pb = pa->next;pslow->next = NULL;if (pa != head)root->left = sortedListToBST(head);root->right = sortedListToBST(pb);return root;}};
0 0
- 【LeetCode】Convert Sorted Array to Binary Search Tree && Convert Sorted List to Binary Search Tree
- LeetCode[Tree]: Convert Sorted List to Binary Search Tree
- [leetcode][list][dfs] Convert Sorted List to Binary Search Tree
- LeetCode: Convert Sorted List to Binary Search Tree
- [LeetCode]Convert Sorted List to Binary Search Tree
- LeetCode : Convert Sorted List to Binary Search Tree
- [Leetcode] Convert Sorted List to Binary Search Tree
- Leetcode: Convert Sorted List to Balanced Binary Search Tree
- [LeetCode] Convert Sorted List to Binary Search Tree
- leetcode 66: Convert Sorted List to Binary Search Tree
- leetcode Convert Sorted List to Binary Search Tree
- LeetCode Convert Sorted List to Binary Search Tree
- leetcode Convert Sorted List to Binary Search Tree
- LeetCode:Convert Sorted List to Binary Search Tree
- [LeetCode]Convert Sorted List to Binary Search Tree
- [Leetcode]Convert Sorted List to Binary Search Tree
- [leetcode]Convert Sorted List to Binary Search Tree
- Leetcode: Convert Sorted List to Binary Search Tree
- Linux 下禁用触摸板
- ACM:圆桌会议
- socket编程之二:两种链接类型tcp和udp
- Android SDK Manager下载失败 Download interrupted
- POJ-3367(队列建逆波兰表达式)
- LeetCode Convert Sorted List to Binary Search Tree
- Huffman编码C实现
- 我的hadoop2.4安装过程
- Firefox 31发布,包含了ECMAScript 6的新特性
- hdu1202
- codeforces Mashmokh and Tokens
- 做有情调菜的视频网址
- DWR实现服务器端向客户端推送消息
- hdu1.2.6 GPA