将一个顺序链表转换成一棵二叉树

利用快慢指针,快指针比满指针每次多走一步

slow = slow->next;

fast = fast->next->next;

快指针走到尾,满指针走到中间点,中间点作为二叉树的根节点root,

root前的节点为左子树,root后的节点为右子树,递归

TreeNode* BST(ListNode* head, ListNode* tail)
{if (head == tail)return NULL;ListNode* slow = head;ListNode* fast = head;while (fast != tail && fast->next != tail){slow = slow->next;fast = fast->next->next;}if (fast->next != tail){slow = slow->next;}TreeNode* root = new TreeNode(slow->val);root->left = BST(head, slow);root->right = BST(slow->next, tail);return root;
}
TreeNode* sortedListToBST(ListNode *head)
{if (head == NULL)return NULL;elsereturn BST(head, NULL);
}

Given a singly linked list where elements are sorted in ascending order, convert it to a height bala相关推荐

  1. python创建一个有序链表_Python实现单向有序链表(Singly linked list)

    概念介绍 上一博文已经介绍了Python实现单向无序链表的实现方式,这篇博文来介绍Python如何实现单向有序链表.有序和无序仅仅指节点所包含的数据成员的大小排列顺序,有序指各个节点按照节点数据成员的 ...

  2. lintcode-easy-Delete Node in the Middle of Singly Linked List

    Implement an algorithm to delete a node in the middle of a singly linked list, given only access to ...

  3. 基本的数据结构:单链表(Singly Linked List)

    一.基本的数据结构:单链表(Singly Linked List) 什么是单链表? 下面是百度百科给出的官方解释: 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素.链表 ...

  4. 单链表(Singly LInked LIst)

    单链表(Singly Linked List) 单链表是比较常见的链表类型.其中每个节点都有一个指向序列下一个节点的指针.这意味着,对链表执行遍历时,只能在一个方向上从头到尾的遍历:为了能够访问链表中 ...

  5. 数据结构与算法(二)单链表(Singly linked list)

    数据结构与算法(二)单链表(Singly linked list) 链表(Linked list) Python完整功能实现 LeetCode思想实践: 链这个东西大家一定都不陌生, 脖子上有项链, ...

  6. Reverse a singly linked list python

    Reverse a singly linked list. class Solution(object):def reverseList(self, head):""": ...

  7. [LintCode] Delete Node in the Middle of Singly Linked List 在单链表的中间删除节点

    Implement an algorithm to delete a node in the middle of a singly linked list, given only access to ...

  8. LeetCode 206 Reverse a singly linked list.

    Reverse a singly linked list. Hint: A linked list can be reversed either iteratively or recursively. ...

  9. LintCode Delete Node in the Middle of Singly Linked List 在O(1)时间复杂度删除链表节点

    中文描述: 给定一个单链表中的表头和一个等待被删除的节点(非表头或表尾).请在在O(1)时间复杂度删除该链表节点.并在删除该节点后,返回表头. 样例 给定 1->2->3->4,和节 ...

最新文章

  1. Linux下安装Tomcat启动报错
  2. 导出到Excel的操作
  3. tcpip运输层不同的两个协议_TCP/IP-运输层-你需要知道的运输层概念
  4. 从零开始玩转JMX(一)——简介和Standard MBean
  5. 2021年11月软考准考证打印时间及操作步骤
  6. jquery sortable的拖动方法内容说明和示例详解(转载http://www.jb51.net/article/45803.htm)
  7. ava线程池ThreadPoolExecutor的keepAliveTime=0时,表示超过core线程数的线程在空闲时立即结束
  8. SAP UI5 调试模式标志位的持久化原理 - local storage
  9. 未来,App就是一个人的全部
  10. C++多线程map读写加锁
  11. 【ffmpeg】不带透明通道的视频overlay
  12. Scrum 的每日例会 和 故事墙
  13. 文件解压缩,删除文件,创建文件,读取xml文件为json字符串,得到相对路径下的图片名称...
  14. 2018-2019-1 20189218《Linux内核原理与分析》第二周作业
  15. XILINX FPGA数字信号处理——10、重定时信号原理及实现
  16. 鲲鹏开发者技术峰会·福州圆满落幕!
  17. 《财富》2022全球500强榜单,沃尔玛九连冠,沙特阿美最赚钱,中国公司上榜最多 | 美通社头条...
  18. wps复选框怎么设置,wps表格中如何插入复选框?
  19. Towards a Theory of Accountability and Audit
  20. 吴氏太极拳宗师王茂斋简介

热门文章

  1. 云计算学习总结(1)——PaaS云平台部署之在Centos7搭建Mesos+Zookeeper+Marathon+Docker单机集群...
  2. 机器学习之 特征工程
  3. 如何使用敏捷开发来赢得太阳能竞速赛
  4. freeswitch订阅会议相关通知
  5. GateSvr的设计2
  6. C++ STL之min_element()与max_element()(取容器中的最大最小值)
  7. Hibernate初始化创建SessionFactory,Session,关闭SessonFactory,session
  8. [2767]翻转排序 sdutOJ
  9. Resharper进阶一:简要介绍
  10. 在VS2005中打造自己的Starter Kits