首页 > 试题广场 >

有序链表变成二叉搜索树

[编程题]有序链表变成二叉搜索树
  • 热度指数:20352 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
给定一个单链表,其中的元素按升序排序,请将它转化成平衡二叉搜索树(BST)
示例1

输入

{-1,0,1,2}

输出

{1,0,2,-1}

说明:本题目包含复杂数据结构TreeNode、ListNode,点此查看相关信息
头像 华科不平凡
发表于 2020-08-21 20:49:38
思路和数组差不多,只是链表需要通过快慢指针找到中间节点: 根据题目示例,如果节点个数为偶数个,应该将中间偏右的那个作为根节点; 不需要断链,如果断链反而麻烦很多。 总结一下如何定位中间偏右(偶数个节点数)的节点以及如何定位中间偏左的节点: 中间偏右:循环条件为!fast && 展开全文
头像 O-Precedence
发表于 2021-09-08 11:03:08
其实(fast!=null&&fast.next!=null)之前一直写成了(fast.next!=null&&fast.next.next!=null),结果就不对了。 import java.util.*; /* * public class TreeNode 展开全文

问题信息

难度:
81条回答 19311浏览

热门推荐

通过挑战的用户

查看代码