[LeetCode]109. Convert Sorted List to Binary Search Tree
来源:互联网 发布:新东方网络英语 编辑:程序博客网 时间:2024/06/13 15:50
Description:
Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.
———————————————————————————————————————————————————
Solution:
题意:将给定增序的单向链表转换成平衡二叉树。
思路:平衡二叉树的特性是左右子树高度差不超过1,。利用这个特性,我们可以使用递归的方法,每次“对半”搜索当前链表的正中间或靠左或靠右节点,将它作为这一层的根,然后将在它之前的的链表作为它的左子树,在它之后的链表作为它的右子树,不断重复递归即可。
/** * 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* sortedListToBST(ListNode* head) { if (head == NULL) return NULL; int length = 0; for (ListNode* cur = head; cur != NULL; cur = cur->next) length++; return structChildTree(head, length); } TreeNode* structChildTree(ListNode* head, int length) { // cout << head->val << " " << length << endl; ListNode* cur = head; int curIndex = 0; for (curIndex = 0; curIndex < length / 2; curIndex++) { cur = cur->next; } TreeNode* root = new TreeNode(cur->val); if (curIndex == 0) root->left = NULL; else root->left = structChildTree(head, length / 2); if (curIndex + 1 == length) root->right = NULL; else root->right = structChildTree(cur->next, length - curIndex - 1); return root; }};
阅读全文
0 0
- LeetCode 109. Convert Sorted List to Binary Search Tree
- [LeetCode]109.Convert Sorted List to Binary Search Tree
- 109.Convert Sorted List to Binary Search Tree Leetcode Python
- [Leetcode] 109. Convert Sorted List to Binary Search Tree
- LeetCode --- 109. Convert Sorted List to Binary Search Tree
- [leetcode] 109.Convert Sorted List to Binary Search Tree
- 109. Convert Sorted List to Binary Search Tree LeetCode
- [leetcode] 109. Convert Sorted List to Binary Search Tree
- Leetcode 109. Convert Sorted List to Binary Search Tree
- [LeetCode]109. Convert Sorted List to Binary Search Tree
- LeetCode *** 109. Convert Sorted List to Binary Search Tree
- LeetCode 109. Convert Sorted List to Binary Search Tree
- LeetCode - 109. Convert Sorted List to Binary Search Tree
- Leetcode 109. Convert Sorted List to Binary Search Tree
- [leetcode] 109. Convert Sorted List to Binary Search Tree
- [LeetCode] 109. Convert Sorted List to Binary Search Tree
- Leetcode-109. Convert Sorted List to Binary Search Tree
- 【leetcode】109. Convert Sorted List to Binary Search Tree
- Storm TopologyBuilder
- 一维数组求平均数js
- 快速排序
- label标签
- iOS异常记录一
- [LeetCode]109. Convert Sorted List to Binary Search Tree
- LAMP环境的搭建
- python数据分析复盘——数据分析相关库之Matplotlib
- java使用反射机制将两个对象共有的属性进行复制value值
- hadoop实战随笔_0715
- 解读数据传输DTS技术架构及最佳实践
- Android welcome欢迎界面
- 希尔排序
- 网易博客fengqing888搬家至CSDN啦