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 balanced BST.

解题思路:

注意是让构造平衡二叉搜索树。

每次将链表从中间断开,分成左右两部分。左边部分用来构造左子树,右边部分用来构造右子树。递归进行求解。

代码:

 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 binary tree
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     TreeNode *sortedListToBST(ListNode *head) {
21         if (head == NULL) return NULL;
22 
23         ListNode *slow = head, *fast = head, *pre = NULL;
24         do {
25             fast = fast->next;
26             if (fast == NULL) break;
27             fast = fast->next;
28             
29             pre = slow;
30             slow = slow->next;
31         } while (fast != NULL);
32 
33         TreeNode * root = new TreeNode(slow->val);
34         if (pre != NULL) {
35             pre->next = NULL;
36             root->left = sortedListToBST(head);
37         }
38         else {
39             root->left = NULL;
40         }
41         TreeNode * right_root = sortedListToBST(slow->next);
42         root->right = right_root;
43         if (pre != NULL) pre->next = slow;
44         return root;
45     }
46 };

 

转载于:https://www.cnblogs.com/dongguangqing/p/3728160.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/260459.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手把手教你如下在Linux下如何写一个C语言代码,编译并运行

文章目录手把手教你如下在Linux下如何写一个C语言代码,编译并运行打开Ubuntu终端创建 helloworld.c编译C文件手把手教你如下在Linux下如何写一个C语言代码,编译并运行 打开Ubuntu终端 我这里的终端是Windows下的WSL,如果有疑问,…

邮件群发工具的编写(二)数据的保存

数据的保存与读取 人类是在不断探索与改进中进步的 上一篇,邮件群发工具的编写(一)邮件地址提取,我们讲到了邮箱的提取。 那么这一篇,讲一下提取完的邮箱信息的保存和读取。 首先,我希望对上一篇邮箱提取类…

mysql 文件描述符_MySQL没有发布临时文件描述符

几天前,我们遇到了MySQL安装的一些严重问题:MySQL不断打开临时文件(正常行为)但这些文件从未发布过.结果是,最终磁盘空间耗尽,我们必须重新启动服务并手动清理/ tmp.使用lsof,我们看到这样的事情:mysqld 16866 mysql 5u REG 8,3 0 692 /tmp/ibyWJylQ (de…

c++ lambda函数_C++11 之 lambda函数的详细使用

1. lambda 函数概述lambda 表达式是一种匿名函数,即没有函数名的函数;该匿名函数是由数学中的λ演算而来的。通常情况下,lambda函数的语法定义为:[capture] (parameters) mutable ->return-type {statement}其中:[c…

zabbix监控 openstack 的实例的资源使用情况

领导提出的需求:在不给云主机安装客户端的情况下,监控云主机的 cpui 内存 网络 io,并且能出图。想了几个方案:1、ceilometer取数据,存入mangodb,用zabbix来读mangodb数据绘图2 ceilometer 取数据 &#xff…

pytorch 正向与反向传播的过程 获取模型的梯度(gradient),并绘制梯度的直方图

记录一下怎样pytorch框架下怎样获得模型的梯度 文章目录引入所需要的库一个简单的函数模型梯度获取先定义一个model如下定义两个获取梯度的函数定义一些过程与调用上述函数的方法可视化一下梯度的histogram引入所需要的库 import os import torch import torch.nn as nn impor…

2012-9

响应式设计的典范 http://www.bostonglobe.com/ 网站测试页面 http://www.webpagetest.org/ 编程算法 http://blog.sina.com.cn/s/articlelist_1647038822_1_1.html C Programmers Cookbook http://www.cppblog.com/mzty/category/7609.html Blade 是一个现代构建系统&#xff…

PV操作 (转载)

PV操作与信号量的处理相关,P表示通过的意思,V表示释放的意思。信号量是最早出现的用来解决进程同步与互斥问题的机制,包括一个称为信号量的变量及对它进行的两个原语操作。 信号量(semaphore)的数据结构为一个值和一个…

ubuntu升级python_Ubuntu 升级python3为更高版本【已实测】

2020-04-13 更新安装步骤: 1. 先update一下 sudo apt update 2. 安装依赖库 sudo apt-get install zlib1g-dev libbz2-dev libssl-dev libncurses5-dev libsqlite3-dev libreadline-dev tk-dev libgdbm-dev libdb-dev libpcap-dev xz-utils libexpat1-dev liblzma-d…

mysql5.0 java连接_Java连接mysql5.0

网上的资料真烂,千篇一律的拷贝的,根本不能用,鄙视! 正题: 到MYSQL网站下载mysql-connector-java-5.0.4.zip文件,解压; 解压后有一个文件:mysql-connector-java-5.0.4-bin.jar 把这个…

Framework打包

2019独角兽企业重金招聘Python工程师标准>>> iOS app需要在许多不同的CPU架构下运行: arm7: 在最老的支持iOS7的设备上使用 arm7s: 在iPhone5和5C上使用 arm64: 运行于iPhone5S的64位 ARM 处理器 上 i386: 32位模拟器上使用 x86_64: 64为模拟器上使用…

windows 10 下利用WSL的Linux环境实现vscode C/C++环境的配置

本文主要结合二个工具,介绍如何在windows搭建Linux开发环境: WSL(Windows Subsystem for Linux)VSCode(Visual Studio Code) 文章目录WSL安装VSCode安装配置Linux下的C/C环境1. 打开WSL的控制台2. 更新ubuntu软件3. 安装GCC和GDB4. 配置VSCode(1). 打开…

java类初始化顺序

转自:http://zangweiren.iteye.com/blog/208122 对于静态变量、静态初始化块、变量、初始化块、构造器,它们的初始化顺序以此是(静态变量、静态初始化块)>(变量、初始化块)>构造器。我们也可以通过下…

Java 8 - Interface Default Method接口默认方法

Java 8 相比于Java 7 推出了几大特色(features)(接口默认方法)default methods in interface, (接口静态方法)static method in interface, 函数编程(functional programming), lamda expression, stream API.这里首先…

Windows 11下 WSL使用 jupyter notebook

这里写目录标题前言在WSL下的配置测试运行更优雅的启动方法配置jupyter生成默认配置文件生成秘钥修改配置文件nohup启动前言 一直都使用jupyter notebook,不管做数据分析,还是调试代码,还有写文章都是。但是好像在WSL下又不好使。看了网上有…

sql2000导出mysql_如何将sql2000的数据库导入到mysql中?

展开全部先用SQl2000导出e68a843231313335323631343130323136353331333262373366文本文件,把后缀名改为CSv,再从Mysql中一导入OK参考:第一种是安装mysql ODBC,利用sql server的导出功能,选择mysql数据源,进…

实现日、周、月排行统计 sql

在如今很多系统中,都需要进行日、周、月排行统计,但是在网上寻找 了一番,发现很多都是相对的周、月排行,即周排行则用当前时间减去7天。这样我个人认为并不恰当。如月排行中,假设今天是4月22日,则从3月22日至4月22日之…

产品运行所需的信息检索失败_为服务业注入新活力,华北工控推出服务机器人专用计算机产品方案...

近年来,随着人口老龄化趋势加快和信息科技革命的持续推进,服务机器人已经被当作社会劳动力的一部分在医疗、教育、餐饮等行业广泛应用,市场潜力巨大。01、需求带动消费,科技改变服务服务机器人是国内智能机器人产业发展最快的分支…

Windows更新没有更新提示:从windows 10升级到Windows 11,并WSL下配置cuda

文章目录从windows 10 升级到Windows 11安装WSL的安装配置cuda从windows 10 升级到Windows 11 升级的方法有很多种,各大网站都有。有更新提示的按更新提示操作即可。我的是一直都没有更新提示,也搜索过网上的一些方法,但都不行。还是没法更新…

js修改css样式属性_这个笔记《CSS样式的常见属性及值》,让菜鸟轻松学会包粽子...

常见样式属性及值字体:font-family-size-style: normal(正常)|italic(倾斜)|oblique-weight: normal|bold(粗体)如果组合起来编写: font: style weight size family字体大小的单位可以是 px, em, rem, pt, cm, mm, in, pc文本:colortext-align(水平对齐方式): left|center|righ…