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?(安装配置)  成都品牌网站制作公司,成都营业执照年报网上怎么办理?