[Leetcode]Convert Sorted List to Binary Search Tree
来源:互联网 发布:寿百年黑俄罗斯淘宝店 编辑:程序博客网 时间:2024/05/16 08:15
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 a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: /*alorithm: divide and conquere two pointer 1->2->3->4->5 //f:3,s = 5 1->2->3->4 //f:3 , s = 4 */ TreeNode* sortedListToBST(ListNode* head) { ListNode* first = head,*second = head; ListNode* ftail = NULL; while(second&&second->next){ second = second->next; if(second->next)second = second->next; ftail = first; first = first->next; } TreeNode* root = NULL; if(first){ root = new TreeNode(first->val); if(ftail)ftail->next = NULL; root->left = ftail == NULL?NULL:sortedListToBST(head); root->right = sortedListToBST(first->next); } return root; }};
class Solution {public: int getCount(ListNode* head){ int count = 0; while(head){ count++; head = head->next; } return count; } //[start,end) TreeNode* sortedListToBSTSub(ListNode* &head,int start,int end){ if(start >= end)return NULL; int m = start + (end-start)/2; TreeNode* l,*r,*root; l = sortedListToBSTSub(head,start,m); root = new TreeNode(head->val); head = head->next; r = sortedListToBSTSub(head,m+1,end); root->left = l; root->right = r; return root; } TreeNode* sortedListToBST(ListNode* head) { int n = getCount(head); return sortedListToBSTSub(head,0,n); }};
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
- 关于第二阶段
- ZOJ.2679 Old Bill【水】 2015/10/12
- HDOJ 题目5501 The Highest Mark(贪心+01背包变形)
- Scala学习笔记16【Scala闭包代码实例】
- ios学习之自定义窗口的激活
- [Leetcode]Convert Sorted List to Binary Search Tree
- Java考题
- 数据结构(九)满二叉树深度计算
- 游戏系统开发笔记(一)——立项、分工和制作基础
- Mybatis框架基础学习(四)
- 杭电acm--1021
- MQX 之串口使用
- SQLSTATE[HY000] [2002] No such file or directory php连接mysql失败
- H5之js拼接select与input的级联