【LeetCode从零单刷】Convert Sorted List to Binary Search Tree
来源:互联网 发布:微信开发 php java 编辑:程序博客网 时间:2024/05/01 08:07
题目:
Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.
解答:
将一段有序序列转换为平衡二叉树,重要是递归。即中点作为根节点,小于部分作为左子树递归,大于部分作为右子树递归。
这里的单链表给 “找中点” 造成了难题,我们可以使用快慢指针的技巧。快指针一次2步,慢指针一次1步,快指针到了终点,慢指针即为中点。
注意:单链表的终点(终点无法取到)是 NULL。
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; *//** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: TreeNode* sortedRangeToBST(ListNode* start, ListNode* end) { if(start == end) return NULL; ListNode* p = start; ListNode* q = start; while(q != end && q->next != end) { p = p->next; q = q->next->next; } TreeNode* mid = new TreeNode(p->val); mid->left = sortedRangeToBST(start, p); mid->right = sortedRangeToBST(p->next, end); return mid; } TreeNode* sortedListToBST(ListNode* head) { return sortedRangeToBST(head, NULL); }};
0 0
- 【LeetCode从零单刷】Convert Sorted List to Binary Search Tree
- 【LeetCode从零单刷】Convert Sorted Array to Binary Search Tree
- 【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
- 英语数学词汇大全
- 哈夫曼树的编码和译码
- HDU-A+B Problem 的Java题解 用Java语言做ACM的注意事项
- c语言数据结构实现后缀表达式求值
- HDOJ 4548 美素数
- 【LeetCode从零单刷】Convert Sorted List to Binary Search Tree
- Sprintf--powerful function
- [温故而知新] 《深度探索c++对象模型》——对象方法成员
- 编译原理(六) LL(1)文法分析法(分析过程的C++实现)
- ListView学习
- pyopengl 学习日志(1)--配置环境
- 欢迎使用CSDN-markdown编辑器】
- maven +SSH日记(1)
- git服务器搭建