LintCode-排序列表转换为二分查找树分析及实例
发布时间 - 2026-01-11 00:49:23 点击率:次给出一个所有元素以升序排序的单链表,将它转换成一棵高度平衡的二分查找树

您在真实的面试中是否遇到过这个题?
分析:就是一个简单的递归,只是需要有些链表的操作而已
代码:
/**
* Definition of ListNode
* class ListNode {
* public:
* int val;
* ListNode *next;
* ListNode(int val) {
* this->val = val;
* this->next = NULL;
* }
* }
* Definition of TreeNode:
* class TreeNode {
* public:
* int val;
* TreeNode *left, *right;
* TreeNode(int val) {
* this->val = val;
* this->left = this->right = NULL;
* }
* }
*/
class Solution {
public:
/**
* @param head: The first node of linked list.
* @return: a tree node
*/
TreeNode *sortedListToBST(ListNode *head) {
// write your code here
if(head==nullptr)
return nullptr;
int len = 0;
ListNode*temp = head;
while(temp){len++;temp = temp->next;};
if(len==1)
{
return new TreeNode(head->val);
}
else if(len==2)
{
TreeNode*root = new TreeNode(head->val);
root->right = new TreeNode(head->next->val);
return root;
}
else
{
len/=2;
temp = head;
int cnt = 0;
while(cnt<len)
{
temp = temp->next;
cnt++;
}
ListNode*pre = head;
while(pre->next!=temp)
pre = pre->next;
pre->next = nullptr;
TreeNode*root = new TreeNode(temp->val);
root->left = sortedListToBST(head);
root->right = sortedListToBST(temp->next);
return root;
}
}
};
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# LintCode
# 排序列表
# LintCode排序
# LintCode 堆化详解及实例代码
# 递归
# 链表
# 升序
# 希望能
# 您在
# 将它
# 谢谢大家
# 一棵
# 转换成
# 遇到过
# 素以
# write
# pre
# nbsp
# br
# cpp
# Definition
# class
# brush
# cnt
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】
Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
微信小程序 HTTPS报错整理常见问题及解决方案
如何有效防御Web建站篡改攻击?
桂林网站制作公司有哪些,桂林马拉松怎么报名?
Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】
如何确保FTP站点访问权限与数据传输安全?
详解Android图表 MPAndroidChart折线图
深圳网站制作平台,深圳市做网站好的公司有哪些?
黑客如何通过漏洞一步步攻陷网站服务器?
JavaScript如何实现倒计时_时间函数如何精确控制
Laravel Admin后台管理框架推荐_Laravel快速开发后台工具
如何在局域网内绑定自建网站域名?
HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】
如何实现javascript表单验证_正则表达式有哪些实用技巧
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
使用spring连接及操作mongodb3.0实例
Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?
如何在腾讯云服务器上快速搭建个人网站?
Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧
如何在香港免费服务器上快速搭建网站?
PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑
如何在阿里云虚拟主机上快速搭建个人网站?
C++时间戳转换成日期时间的步骤和示例代码
如何在万网开始建站?分步指南解析
如何快速搭建高效服务器建站系统?
活动邀请函制作网站有哪些,活动邀请函文案?
Android Socket接口实现即时通讯实例代码
Laravel事件监听器怎么写_Laravel Event和Listener使用教程
Laravel如何优化应用性能?(缓存和优化命令)
如何制作一个表白网站视频,关于勇敢表白的小标题?
如何在搬瓦工VPS快速搭建网站?
详解jQuery中基本的动画方法
如何在服务器上配置二级域名建站?
JavaScript中的标签模板是什么_它如何扩展字符串功能
Laravel怎么清理缓存_Laravel optimize clear命令详解
javascript读取文本节点方法小结
如何在阿里云部署织梦网站?
昵图网官网入口 昵图网素材平台官方入口
Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】
夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化
Swift中循环语句中的转移语句 break 和 continue
Laravel如何自定义分页视图?(Pagination示例)
如何快速查询网址的建站时间与历史轨迹?
Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】
高性能网站服务器配置指南:安全稳定与高效建站核心方案
Laravel如何使用Service Container和依赖注入?(代码示例)
Laravel如何集成Inertia.js与Vue/React?(安装配置)
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
上一篇:护师万题库密码修改指南
上一篇:护师万题库密码修改指南

