有序链表转换二叉搜索树
109. 有序链表转换二叉搜索树
给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。
本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。
示例:
给定的有序链表: [-10, -3, 0, 5, 9],一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树:0/ \-3 9/ /-10 5 先转化成数组,再来操作指针。
1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * ListNode *next; 6 * ListNode(int x) : val(x), next(NULL) {} 7 * }; 8 */ 9 /** 10 * Definition for a binary tree node. 11 * struct TreeNode { 12 * int val; 13 * TreeNode *left; 14 * TreeNode *right; 15 * TreeNode(int x) : val(x), left(NULL), right(NULL) {} 16 * }; 17 */ 18 class Solution { 19 public: 20 int ans[100001]; 21 TreeNode* solve(int l, int r){ 22 if (r < l) return NULL; 23 int mid = (l+r) >> 1; 24 TreeNode* root = new TreeNode(ans[mid]); 25 root->left = solve(l,mid-1); 26 root->right = solve(mid+1,r); 27 return root; 28 } 29 TreeNode* sortedListToBST(ListNode* head) { 30 int k = 0; 31 while(head != NULL){ 32 ans[k++] = head->val; 33 head = head->next; 34 } 35 return solve(0,k-1); 36 } 37 };
转载于:https://www.cnblogs.com/zllwxm123/p/10878959.html
有序链表转换二叉搜索树相关推荐
- 109. 有序链表转换二叉搜索树
链接:109. 有序链表转换二叉搜索树 题解:https://leetcode-cn.com/problems/convert-sorted-list-to-binary-search-tree/so ...
- ( “树” 之 BST) 109. 有序链表转换二叉搜索树 ——【Leetcode每日一题】
二叉查找树(BST):根节点大于等于左子树所有节点,小于等于右子树所有节点. 二叉查找树中序遍历有序. 109. 有序链表转换二叉搜索树 给定一个单链表的头节点 head ,其中的元素 按升序排序 , ...
- 【LeetCode每日一题】——109.有序链表转换二叉搜索树
文章目录 一[题目类别] 二[题目难度] 三[题目编号] 四[题目描述] 五[题目示例] 六[题目提示] 七[解题思路] 八[时间频度] 九[代码实现] 十[提交结果] 一[题目类别] 二叉树 二[题 ...
- Java实现 LeetCode 109 有序链表转换二叉搜索树
109. 有序链表转换二叉搜索树 给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1. ...
- 【算法】有序链表转换二叉搜索树和从中序与后序遍历序列构造二叉树Java解答参考
三道算法题 1.有序链表转换二叉搜索树 Java代码参考 2.从中序与后序遍历序列构造二叉树 Java代码参考 3.移除元素 Java代码参考 1.有序链表转换二叉搜索树 给定一个单链表,其中的元素按 ...
- LeetCode(109):有序链表转换二叉搜索树
Medium! 题目描述: 给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1. 示例: ...
- 有序链表转换二叉搜索树(LeetCode)
将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1. 示例: 给定有序数组: [-10,-3,0, ...
- LeetCode 109. 有序链表转换二叉搜索树(快慢指针+递归)
1. 题目 给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1. 来源:力扣(LeetC ...
- [Leetcode][第109题][JAVA][有序链表转换二叉搜索树][分治][快慢指针][中序遍历]
[问题描述][中等] [解答思路] 1. 分治 快慢指针 复杂度 class Solution {public TreeNode sortedListToBST(ListNode head) {ret ...
最新文章
- msbuild 语法_用于删除文件的MSBuild Task语法
- [算法][递归] 棋盘覆盖
- C语言 | 关于e格式符的问题(附C例程)
- php遍历删除目录下文件,PHP遍历删除文件夹已经文件内的所有文件
- C#全能数据库操作类及调用示例
- fanuc机器人编程手册_是谁需要G代码编程机器人?
- 麻省、北大、清华等顶尖高校与企业 20 位强化学习专家齐聚,RLChina 2021 强化学习暑期课免费报名啦!...
- 强大的jQuery选择器之选定连续多行
- UDP协议和socketserver以及文件上传
- plsql使用方法(主要是sql语句)
- ubantu桌面,compiz特效和配置
- 假如你在泰坦尼克号上 你能活下来吗?——kaggle比赛泰坦尼克号数据集基于决策树
- System.gc()的理解
- html扫码支付,WEB端第三方支付接入 - 支付宝 - 扫码支付
- 嵌入式linux程序加密,基于嵌入式操作系统uClinux实现网络安全加密系统的设计
- linux打包解压命令
- 6号团队-团队任务5:项目总结会
- 【深度学习】从Pix2Code到CycleGAN:2017年深度学习重大研究进展全解读
- 大规模MIMO天线技术
- 数据挖掘竞赛——糖尿病遗传风险检测挑战赛进阶
热门文章
- centos安装redis并客户端连接_网络共享打印机图文教程,电脑客户端连接安装设置共享打印机方法...
- mysql 1067 win7,大师练习win7系统无法启动MySQL服务错误1067的设置教程
- vscode remote免密登录
- python 编译 pyc
- javascript GlobalEventHandlers
- Pandas MultiIndex(多重索引)
- oracle大于或等于,如何用SQL实现最接近某一个值且大于等于这个值的一条记录
- 中南民族大学计算机科学学院转专业,【通知】2018-2019学年学生转专业及专业分流工作...
- Exchange Server 2016 独立部署/共存部署 (五)—— 配置DAG(下)
- Docker学习总结(34)——新手使用Docker的11条准则