LeetCode题解——Convert Sorted List to Binary Search Tree
来源:互联网 发布:东莞淘宝美工专业培训 编辑:程序博客网 时间:2024/05/17 01:26
Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.
分析:要求最后得到一颗平衡二叉树,那么链表的中间节点就是二叉树的根节点,中间节点左边就是二叉树的左子树,中间节点右边就是二叉树的右子树
首先找到链表的中间节点作为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: TreeNode* sortedListToBST(ListNode* head) {//O(n^2)解法 if(!head) return NULL; //find the median of the listNode O(n) ListNode* MidNode = findMedianOfList(head); TreeNode* root=new TreeNode(MidNode->val); root->right = sortedListToBST(MidNode->next);// set MidNode to NULL get the left part of the ListListNode* phead = new ListNode(0);phead->next = head;ListNode* newhead = phead;while(newhead->next && newhead->next!=MidNode){newhead = newhead->next;}newhead->next = NULL; root->left = sortedListToBST(phead->next); return root; } ListNode* findMedianOfList(ListNode* head){ if(!head||!head->next) return head; ListNode* fast = head, *slow = head; while(fast && fast->next){ fast = fast->next->next; slow = slow->next; } return slow; }};
0 0
- 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—109 Convert Sorted List 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 Array to Binary Search Tree
- LeetCode题解:Convert Sorted Array to Binary Search Tree
- LeetCode题解:Convert Sorted Array to Binary Search Tree
- LeetCode 108. Convert Sorted Array to Binary Search Tree 题解
- Leetcode109——Convert Sorted List to Binary Search Tree
- LeetCode109—Convert Sorted List to Binary Search Tree
- LeetCode 题解(154): Convert Sorted List to Binary Search Tree
- 109. Convert Sorted List to Binary Search Tree【M】【33】【leetcode题解】
- LeetCode——Convert Sorted Array to Binary Search Tree
- leetcode——109——Convert Sorted List to Binary Search Tree
- leetcode 109 —— Convert Sorted List to Binary Search Tree
- RecyclerView CardView使用解析
- Android中内容观察者的使用---- ContentObserver类详解
- test
- SQL分组求每组最大值问题的解决方法收集
- linux python3.4获取股票脚本
- LeetCode题解——Convert Sorted List to Binary Search Tree
- 设计模式学习笔记--6大设计原则
- Bitmap详解之获取Bitmap的方法
- BZOJ 3876: [Ahoi2014]支线剧情(有源有汇有下界的费用流)
- C语言中“指针”和“指针变量”区别及定义
- Python模拟java输入输出流
- linux c 九宫格
- Eclipse 调试技巧
- (LeetCode) Divide Two Integers (Java)思路讲解及实现