1382. Balance a Binary Search Tree
时间:2020-03-16
本文章向大家介绍1382. Balance a Binary Search Tree,主要包括1382. Balance a Binary Search Tree使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
package LeetCode_1382 import kotlin.collections.ArrayList /** * 1382. Balance a Binary Search Tree * https://leetcode.com/problems/balance-a-binary-search-tree/description/ * * Example: * var ti = TreeNode(5) * var v = ti.`val` * Definition for a binary tree node. * * 1.BST+inorder=>array sorted * time complexity is O(n) * space complexity is O(n) * * 2.cover sorted array to BST(Binary Search Tree) * time complexity is O(n) * space complexity is O(logn) */ class TreeNode(var `val`: Int) { var left: TreeNode? = null var right: TreeNode? = null } class Solution { fun balanceBST(root_: TreeNode?): TreeNode? { if (root_==null){ return null } val list = ArrayList<Int>() //Iteration /*val stack = Stack<TreeNode>() var root = root_ while (stack.isNotEmpty() || root != null) { if (root != null) { stack.push(root) root = root.left } else { root = stack.pop() list.add(root.`val`) root = root.right } }*/ //recursion //left->root->right inorder(list,root_) return coverHelp(list, 0, list.size - 1) } private fun inorder(list: ArrayList<Int>,root:TreeNode?){ if (root==null){ return } inorder(list,root.left) list.add(root.`val`) inorder(list,root.right) } private fun coverHelp(list: ArrayList<Int>, left: Int, right: Int): TreeNode? { if (left > right) { return null } val mid = (left + right) / 2 val node = TreeNode(list[mid]) node.left = coverHelp(list, left, mid - 1) node.right = coverHelp(list, mid + 1, right) return node } }
原文地址:https://www.cnblogs.com/johnnyzhao/p/12503394.html
- PCIE的简单配置(r8笔记第82天)
- 7个深度神经网络可视化工具,不可错过!
- Pwnhub之奇妙的巨蟒 Writeup
- WINDOW 安装mysql5.7数据库,并设置密码及相关报错
- go channel 通信通道
- SQl 语句(常见) 新建,删除,修改表,新增字段,修改默认值
- SQL处理表结构的基本方法整理(创建表,关联表,复制表)
- Go web之旅(路由篇)
- Golang插入排序
- Golang写的并行排序算法
- Go中调用dll示例
- python 序列化数据:pickle与json ,dumps与loads
- golang继承,和多态
- python 利用random生成验证码与MD5码加密过程
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Oracle数据库名、实例名、ORACLE_SID、数据库域名、全局数据库名、服务名详解
- Maven实战之旅第六篇——maven常用指令
- maven实战之旅第四篇——利用maven archetype手动建立一个maven项目
- 一起刷 leetcode 之旋转矩阵
- exe调用DLL的方式
- 聊聊claudb的DatabaseCleaner
- Stata | 排名转为得分
- kafka使用avro序列化和反序列化
- avro使用schema生成java文件
- zabbix_sender安装和使用
- zabbix_get安装和使用
- rabbitmq搭建集群踩坑记
- Elasticsearch升级踩坑记之升级elasticsearch2.x到elasticsearch5.x
- 变量判断与设置
- 变量的删除与替换