Convert Sorted List to Binary Search Tree
来源:互联网 发布:line聊天软件 编辑:程序博客网 时间:2024/06/01 23:48
一、问题描述
Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.
二、思路
数组的关键在于下标,链表的关键在于首位节点。我们递归的退出条件是头尾节点相等:
if(head == tail) return NULL;即链表为空,另一个退出条件是链表只有一个节点:
if(head -> next == tail){ TreeNode *root = new TreeNode(head->val); return root; }
最关键的部分在于找到中间节点,和数组转变为二叉树思路类似。Convert Sorted Array to Binary Search Tree
为了找到中间节点,我们用了快慢指针,mid和temp。
三、代码
/** * 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) { return createTree(head,NULL); } TreeNode* createTree(ListNode* head, ListNode* tail){ if(head == tail) return NULL; if(head -> next == tail){ TreeNode *root = new TreeNode(head->val); return root; } ListNode *mid = head, *temp = head; while(temp != tail && temp->next != tail){ mid = mid->next; temp = temp->next->next; } TreeNode *root = new TreeNode(mid->val); root->left = createTree(head, mid); root->right = createTree(mid->next, tail); return root; }};
0 0
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- convert sorted list to binary search tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Wunder Fund Round 2016 (Div. 1 + Div. 2 combined) B. Guess the Permutation
- debug.keystore密码
- 分库后如何处理分页?
- 【IOS学习】最新版SDWebImage的使用
- CentOS7 安装 orcle12c步骤整理
- Convert Sorted List to Binary Search Tree
- 欢迎使用CSDN-markdown编辑器
- JavaScript 事件流、事件处理程序及事件对象总结
- 生产环境下的高可用NFS文件服务器
- python pd.crosstab在处理时间序列文本数据的用处
- 细说JVM系列:自动内存管理内存回收:垃圾收集理论-垃圾收集算法
- yii框架下 i18nDemo 模式 网站多种语言切换
- [美剧赏析] 权力的游戏<Game of Thrones>完全赏析 (31-32)
- 仿QQ弹出复制操作框