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

有序链表转换二叉搜索树相关推荐

  1. 109. 有序链表转换二叉搜索树

    链接:109. 有序链表转换二叉搜索树 题解:https://leetcode-cn.com/problems/convert-sorted-list-to-binary-search-tree/so ...

  2. ( “树” 之 BST) 109. 有序链表转换二叉搜索树 ——【Leetcode每日一题】

    二叉查找树(BST):根节点大于等于左子树所有节点,小于等于右子树所有节点. 二叉查找树中序遍历有序. 109. 有序链表转换二叉搜索树 给定一个单链表的头节点 head ,其中的元素 按升序排序 , ...

  3. 【LeetCode每日一题】——109.有序链表转换二叉搜索树

    文章目录 一[题目类别] 二[题目难度] 三[题目编号] 四[题目描述] 五[题目示例] 六[题目提示] 七[解题思路] 八[时间频度] 九[代码实现] 十[提交结果] 一[题目类别] 二叉树 二[题 ...

  4. Java实现 LeetCode 109 有序链表转换二叉搜索树

    109. 有序链表转换二叉搜索树 给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1. ...

  5. 【算法】有序链表转换二叉搜索树和从中序与后序遍历序列构造二叉树Java解答参考

    三道算法题 1.有序链表转换二叉搜索树 Java代码参考 2.从中序与后序遍历序列构造二叉树 Java代码参考 3.移除元素 Java代码参考 1.有序链表转换二叉搜索树 给定一个单链表,其中的元素按 ...

  6. LeetCode(109):有序链表转换二叉搜索树

    Medium! 题目描述: 给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1. 示例: ...

  7. 有序链表转换二叉搜索树(LeetCode)

    将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1. 示例: 给定有序数组: [-10,-3,0, ...

  8. LeetCode 109. 有序链表转换二叉搜索树(快慢指针+递归)

    1. 题目 给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1. 来源:力扣(LeetC ...

  9. [Leetcode][第109题][JAVA][有序链表转换二叉搜索树][分治][快慢指针][中序遍历]

    [问题描述][中等] [解答思路] 1. 分治 快慢指针 复杂度 class Solution {public TreeNode sortedListToBST(ListNode head) {ret ...

最新文章

  1. msbuild 语法_用于删除文件的MSBuild Task语法
  2. [算法][递归] 棋盘覆盖
  3. C语言 | 关于e格式符的问题(附C例程)
  4. php遍历删除目录下文件,PHP遍历删除文件夹已经文件内的所有文件
  5. C#全能数据库操作类及调用示例
  6. fanuc机器人编程手册_是谁需要G代码编程机器人?
  7. 麻省、北大、清华等顶尖高校与企业 20 位强化学习专家齐聚,RLChina 2021 强化学习暑期课免费报名啦!...
  8. 强大的jQuery选择器之选定连续多行
  9. UDP协议和socketserver以及文件上传
  10. plsql使用方法(主要是sql语句)
  11. ubantu桌面,compiz特效和配置
  12. 假如你在泰坦尼克号上 你能活下来吗?——kaggle比赛泰坦尼克号数据集基于决策树
  13. System.gc()的理解
  14. html扫码支付,WEB端第三方支付接入 - 支付宝 - 扫码支付
  15. 嵌入式linux程序加密,基于嵌入式操作系统uClinux实现网络安全加密系统的设计
  16. linux打包解压命令
  17. 6号团队-团队任务5:项目总结会
  18. 【深度学习】从Pix2Code到CycleGAN:2017年深度学习重大研究进展全解读
  19. 大规模MIMO天线技术
  20. 数据挖掘竞赛——糖尿病遗传风险检测挑战赛进阶

热门文章

  1. centos安装redis并客户端连接_网络共享打印机图文教程,电脑客户端连接安装设置共享打印机方法...
  2. mysql 1067 win7,大师练习win7系统无法启动MySQL服务错误1067的设置教程
  3. vscode remote免密登录
  4. python 编译 pyc
  5. javascript GlobalEventHandlers
  6. Pandas MultiIndex(多重索引)
  7. oracle大于或等于,如何用SQL实现最接近某一个值且大于等于这个值的一条记录
  8. 中南民族大学计算机科学学院转专业,【通知】2018-2019学年学生转专业及专业分流工作...
  9. Exchange Server 2016 独立部署/共存部署 (五)—— 配置DAG(下)
  10. Docker学习总结(34)——新手使用Docker的11条准则