排序列表转换为二分查找树
来源:互联网 发布:达内培训 班java机 编辑:程序博客网 时间:2024/06/18 15:44
给出一个所有元素以升序排序的单链表,将它转换成一棵高度平衡的二分查找树
/** * Definition of ListNode * class ListNode { * public: * int val; * ListNode *next; * ListNode(int val) { * this->val = val; * this->next = NULL; * } * } * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; * TreeNode(int val) { * this->val = val; * this->left = this->right = NULL; * } * } */class Solution {public: /** * @param head: The first node of linked list. * @return: a tree node */ TreeNode *sortedListToBST(ListNode *head) { // write your code here if (head == NULL) { return NULL; } int len = 0; ListNode *p = head; while (p != NULL) { len++; p = p->next; } return createTree(head, 0, len-1); }private: TreeNode* createTree(ListNode *head, int left, int right) { if (left > right) { return NULL; } int mid = left + (right-left)/2; ListNode *p = head; for (int i = left; i < mid; i++) { p = p->next; } TreeNode *leftNode = createTree(head, left, mid-1); TreeNode *rightNode = createTree(p->next, mid+1, right); TreeNode *root = new TreeNode(p->val); root->left = leftNode; root->right = rightNode; return root; }};
0 0
- 排序列表转换为二分查找树
- 排序列表转换为二分查找树
- 排序列表转换为二分查找树
- 排序列表转换为二分查找树
- 排序列表转换为二分查找树
- LintCode-排序列表转换为二分查找树
- lintcode-排序列表转换为二分查找树-106
- 题目:排序列表转换为二分查找树
- LintCode:排序列表转换为二分查找树
- lintcode,排序列表转换为二分查找树
- LintCode 106-排序列表转换为二分查找树
- lintcode 排序列表转换为二分查找树(
- LintCode 排序列表转换为二分查找树
- 排序列表转换为二分查找树-LintCode
- 排序列表转换为二分查找树-LintCode
- LINTCODE---排序列表转换为二分查找树
- 排序列表转化为二分查找树
- Java实现-排列列表转换为二分查找树
- 1, 背景介绍
- 9.10Axure动态设置
- java io
- B/S结构简介及与C/S结构的区别
- iOS --- 应用内跳转到AppStore里评分
- 排序列表转换为二分查找树
- HDU 5221 Occupation dfs序版树链剖分
- VC++平台上的内存对齐操作
- Webview--如何让加载进来的页面自适应手机屏幕分辨率居中
- java tips
- CodeForces 12A - Super Agent
- 随机数的产生
- 排序算法
- 来到惠普的第一篇博文