博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Leetcode刷题篇】leetcoe109 有序链表转换二叉搜索树
阅读量:1886 次
发布时间:2019-04-26

本文共 1227 字,大约阅读时间需要 4 分钟。

给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。

本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。

在这里插入图片描述

思路:用快慢结点的思路来求出链表的中间结点,使其生成根节点

package com.lcz.leetcode;/** * 有序链表转换二叉搜索树 * @author LvChaoZhang * */public class Leetcode109 {
class ListNode{
int val; ListNode next; ListNode(){
} ListNode(int val){
this.val = val; } ListNode(int val,ListNode next){
this.val = val; this.next = next; } } class TreeNode{
int val; TreeNode left; TreeNode right; TreeNode(){
} TreeNode(int val){
this.val = val; } TreeNode(int val,TreeNode left,TreeNode right){
this.val = val; this.left = left; this.right = right; } } public TreeNode sortedListToBST(ListNode head) {
return dfs(head,null); } private TreeNode dfs(ListNode left,ListNode right) {
// 遍历终止条件 if(left==right) {
return null; } ListNode mid = getMedian(left,right); TreeNode root = new TreeNode(mid.val); root.left = dfs(left,mid); root.right = dfs(mid.next,right); return root; } private ListNode getMedian(ListNode left,ListNode right) {
ListNode fast = left; ListNode slow = left; while(fast!=right&&fast.next!=right) {
fast = fast.next.next; slow = slow.next; } return slow; }}

转载地址:http://pwwdf.baihongyu.com/

你可能感兴趣的文章
windows7下vscode通过ssh编辑服务器代码的方法
查看>>
在docker容器中添加SSH支持的办法
查看>>
CentOS7安装高版本的php
查看>>
CentOS7升级Git2的办法
查看>>
阿里云CentOS8安装nginx+php-fpm
查看>>
VSCode使用SVN插件
查看>>
在Centos7下把mariadb更换为MySQL的一些问题
查看>>
CentOS在使用nginx之后添加SVN的http支持
查看>>
调试CRME后台的SQL语句(ThinkPHP6)
查看>>
CRMEB多商户版跨域问题解决
查看>>
Linux下svn命令行技巧
查看>>
针对QQ,TIM工作群提供服务的功能
查看>>
VSCode连接Linux服务器出错
查看>>
CentOS下unzip出现错误的解决办法
查看>>
OpenAPI系列 旧接口生成YAML的办法
查看>>
PHP使用枚举类型(极简版)
查看>>
设计了一个新的Excel导入模块
查看>>
多个版本python的版本切换
查看>>
vscode中Comments are not permitted in JSON的解决办法
查看>>
解决uni-app外网测试sockjs-node/info错误的问题
查看>>