【链表递归构造二叉树】LeetCode 109. Convert Sorted List to Binary Search Tree
LeetCode 109. Convert Sorted List to Binary Search Tree
Solution1:我的答案
偷鸡摸狗的做法
/*** 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) return NULL;vector<int> num;ListNode* cur = head;while (cur) {num.push_back(cur->val);cur = cur->next;}return sortedArrayToBST(num, 0 , num.size() - 1);}TreeNode *sortedArrayToBST(vector<int> &num, int left, int right) {if (left > right) return NULL;int mid = (left + right) / 2;TreeNode *cur = new TreeNode(num[mid]);cur->left = sortedArrayToBST(num, left, mid - 1);cur->right = sortedArrayToBST(num, mid + 1, right);return cur;}
};
Solution2:
正儿八经的做法
【重点】:学习快慢指针找链表中点的代码写法
参考网址:http://www.cnblogs.com/grandyang/p/4295618.html
链表的查找中间点可以通过快慢指针来操作,可参见之前的两篇博客Reorder List 链表重排序和Linked List Cycle II 单链表中的环之二有关快慢指针的应用。找到中点后,要以中点的值建立一个数的根节点,然后需要把原链表断开,分为前后两个链表,都不能包含原中节点,然后再分别对这两个链表递归调用原函数,分别连上左右子节点即可。代码如下:
class Solution {
public:TreeNode *sortedListToBST(ListNode *head) {if (!head) return NULL;if (!head->next) return new TreeNode(head->val);ListNode *slow = head;ListNode *fast = head;ListNode *last = slow;while (fast->next && fast->next->next) {last = slow;//last是slow的前一个结点,也是隶属于左子树链表的最后一个结点slow = slow->next;fast = fast->next->next;}fast = slow->next;//把fast设置为隶属于右子树链表的起点last->next = NULL;TreeNode *cur = new TreeNode(slow->val);if (head != slow) cur->left = sortedListToBST(head);cur->right = sortedListToBST(fast);return cur;}
};
【链表递归构造二叉树】LeetCode 109. Convert Sorted List to Binary Search Tree相关推荐
- LeetCode: 109. Convert Sorted List to Binary Search Tree
题目 Given a singly linked list where elements are sorted in ascending order, convert it to a height b ...
- LeetCode 109. Convert Sorted List to Binary Search Tree
Given a singly linked list where elements are sorted in ascending order, convert it to a height bala ...
- 【数组递归构造二叉树】LeetCode 108. Convert Sorted Array to Binary Search Tree
LeetCode 108. Convert Sorted Array to Binary Search Tree Solution1:我的答案 构造二叉树利用递归 /*** Definition fo ...
- 【leetcode】109. Convert Sorted List to Binary Search Tree
题目如下: Given a singly linked list where elements are sorted in ascending order, convert it to a heigh ...
- leetcode -day19 Convert Sorted List to Binary Search Tree
1. Convert Sorted List to Binary Search Tree Given a singly linked list where elements are sorted ...
- LeetCode OJ - Convert Sorted List to Binary Search Tree
题目: Given a singly linked list where elements are sorted in ascending order, convert it to a height ...
- 109. Convert Sorted List to Binary Search Tree
题目 原始地址:https://leetcode.com/problems/convert-sorted-list-to-binary-search-tree/#/description /*** D ...
- LeetCode: 108. Convert Sorted Array to Binary Search Tree
题目 Given an array where elements are sorted in ascending order, convert it to a height balanced BST. ...
- LeetCode 108. Convert Sorted Array to Binary Search Tree
题目: Given an array where elements are sorted in ascending order, convert it to a height balanced BST ...
最新文章
- 英语计算机工程师求职信,电脑工程师的英文求职信样文
- Windows10 JDK9安装及配置环境变量与Eclipse安装
- HBase -ROOT-和.META.表结构
- redis bind多个ip_Spring Boot 中 Redis 的使用
- C语言的一些有趣的冷知识
- java 数组排序论文_Java 7是否对方法Arrays.Sort使用Tim Sort?
- C#实验报告 类与对象的访问性:银行账户存取款、新建账户、查询余额
- 多线程 调用多线程的方法 Runtime与ProcessBuilder
- Android “再按一次退出“
- 架构组件:基于Shard-Jdbc分库分表,数据库扩容方案
- CVPR 2019 爆款论文作者现场解读:视觉语言导航、运动视频深度预测、6D姿态估计...
- 面试官最常问的问题总结(一)
- css3中transition和display的坑
- 2020-06-05 原始套接字/AF_PACKET链路层访问
- 阿里云centos7上yum安装并连接mysql
- 视频文件压缩成什么格式最小?
- 拆弹实验-phase_3
- vue双花括号的使用
- Python数据结构速成
- 使用微信web开发者工具调试接口数据【开发记录】
热门文章
- np.random.choice的用法
- 数据结构上机实践第五周项目3 - 括号的匹配
- Latex文本文档的排版
- 云免流控服务器响应失败,云免流服务器是否违法
- 键盘可以实现向计算机输入数据判断,计算机应用基础—学习指南.docx
- 请使用webdav_介绍下phpdav的使用功能价值
- 自学Java要不要背熟语法_JAVASE经典面试问题(必须熟背),你Get到了吗?
- linux配置路径,Linux下配置搜索路径
- mysql update 几万 非常慢_Mysql优化专题
- jooq生成records_Java 14 Records类