[LintCode/LeetCode] Convert Sorted List to Balanced BST [二叉搜索树]

news/2025/5/24 2:10:35

Problem

Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.

Example

               2
1->2->3  =>   / \1   3

Note

用递归的方法来做,首先新建cur结点来复制head结点,然后计算链表head的长度,调用helper(start, end)函数建立平衡BST。
当链表为空时,helper()中出现start大于end,返回null。然后计算中点mid,以mid为界分别递归构建左右子树。顺序是,左子树-->根结点-->右子树。由于根节点root是直接取cur.val构建,当前的cur已经被取用。所以在下一次递归构建右子树之前,要让cur指向cur.next。最后将root和左右子树相连,返回root

Solution

public class Solution {ListNode cur;public TreeNode sortedListToBST(ListNode head) {  cur = head;int len = 0;while (head != null) {head = head.next;len++;}return helper(0, len-1);}public TreeNode helper(int start, int end) {if (start > end) return null;int mid = start+(end-start)/2;TreeNode left = helper(start, mid-1);TreeNode root = new TreeNode(cur.val);cur = cur.next;TreeNode right = helper(mid+1, end);root.left = left;root.right = right;return root;}
}

https://dhexx.cn/news/show-3040486.html

相关文章

Python 特殊字符处理

Python 特殊字符处理 特殊字符处理方法 十六进制转为十进制过程中会可能存在无法转化的十六进制信息,如 \x00,等。尝试过诸多方式,以下代码处理为佳。 mes_list [] # 定义空列表,接收信息 isvisible 0 # 判断标志 symbols …

Unity项目工程集成友盟分析统计SDK(支持iOS与Android平台)

Unity3d项目集成友盟分析统计SDK(支持iOS与Androi平台)介绍:项目主体功能完成后,还有一项比较重要的工作,那就是加入第三方关于下载、使用该项目的用户情况的详细数据分析统计功能。而目前国内业界比较流行使用的第三方…

开源许可协议比较

现在的开源协议其实有很多种类,通过OpenSource Initiative组织许可的协议都在http://opensource.org/licenses/category列了出来,但是常见的基本上还是就那么几个。 在网上找了一个比较清晰的区别的图: 还有一段到处都是,不知道出…

Unity项目工程集成Mob的社会化分享SDK之发布到iOS平台

Unity项目集成Mob的社会化分享SDK之发布到iOS平台Mob也属于业界比较流行使用的第三方服务平台。虽然友盟也提供了社会化分享SDK,但是个人感觉没Mob的好使,并且好像友盟后台数据实时更新比较迟缓。另外,值得一提的是,Mob的官网客服…

16 位 CPU 寄存器英文全称

寄存器英文全称 四个数据寄存器 H 表示 High(高位),L 表示 Low (低位) AH & AL=AX (Accumulator):累加寄存器 BH & BL=BX (Base):基址寄存器 CH & CL&…

实验 4 在分支循环结构中调用自定义函数 利用循环计算多个圆柱体体积

/*输入r,h,n求多个圆柱体体积*/#include<stdio.h> int main(void) {int i,n;double h,r,v;double cylinder(double h,double r); /*函数声明*/printf("Enter n&#xff1a;"); /*提示输入n*/scanf("%d",&n);for(i1;i<…

桌面和任务栏突然出现 爱淘宝.lnk Dandelion.exe

今天在用电脑的时候&#xff0c;也就看看网页&#xff0c;没动什么软件&#xff0c;就在我眼皮底下&#xff0c;突然发现任务栏冒出个“淘红包”的图标来&#xff01; 又有人在耍流氓了&#xff01;我们来看看到底是谁&#xff1f; 是谁&#xff1f; 在任务栏上的“淘红包”图标…

相对基址加变址寻址方式与其它寻址方式之间的变形关系

相对基址加变址寻址方式与其它寻址方式之间的变形关系 源操作数指令的变形源操作数的寻址方式只有偏移量MOV AX, [100H]直接寻址方式只有一个寄存器MOV AX, [BX] 或 MOV AX, [SI]寄存器间接寻址方式有一个寄存器和偏移量MOV AX, [BX100H] 或 MOV AX, [SI100H]寄存器相对寻址…

Unity项目工程集成Mob社会化分享SDK(android篇)

Unity项目工程集成Mob社会化分享SDK&#xff08;Android篇&#xff09;参考我的上一篇关于Unity项目利用Mob社会化分享ios平台前面几个步骤&#xff0c;将发布到Android平台需要的相关文件导入即可。Android目录文件及MiniJSON/和ShareSDK文件&#xff08;如果工程里没有的话&a…

mongoDB 启动 Error: couldn't connect to server 127.0.0.1:27017 src/mongo/shell/mongo.js:91

​ ​MongoDB启动时出现Error: couldnt connect to server 127.0.0.1:27017 src/mongo/shell/mongo.js:91 无法连接到mongoDB 可以通过指定dbpath 指定来解决&#xff0c;但这不是根本原因&#xff0c;MongoDB在非正常关闭时产生一个mongod.lock这样的.lock文件&#xff0…