LeetCode 之 108. 将有序数组转换为二叉搜索树
思路:
二叉搜索树的定义: 它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。二叉搜索树作为一种经典的数据结构,它既有链表的快速插入与删除操作的特点,又有数组快速查找的优势;
基于题目给的是排序的数组,取中间点作为root,递归构造左右子数即可;
python/python3:
1 class Solution:
2 def sortedArrayToBST(self, nums: List[int]) -> TreeNode:
3 if not nums:
4 return None
5 root_index = int(len(nums)/2)
6 root = TreeNode(nums[root_index])
7 root.left = self.sortedArrayToBST(nums[:root_index])
8 root.right = self.sortedArrayToBST(nums[root_index+1:])
9 return root
C++:
1 class Solution {
2 public:
3 TreeNode* sortedArrayToBST(vector<int>& nums) {
4 if(nums.size() == 0){
5 return NULL;
6 }
7 int root_index = nums.size()/2;
8 TreeNode* root = new TreeNode(nums[root_index]);
9 vector<int> left_nums(nums.begin(), nums.begin()+root_index);
10 vector<int> right_nums(nums.begin()+root_index+1, nums.end());
11 root->left = sortedArrayToBST(left_nums);
12 root->right = sortedArrayToBST(right_nums);
13 return root;
14 }
15 };
LeetCode 之 108. 将有序数组转换为二叉搜索树的更多相关文章
- LeetCode【108. 将有序数组转换为二叉搜索树】
又是二叉树,最开始都忘记了二叉搜索树是什么意思,搜索了一下: 二叉搜索树:左节点都小于右节点,在这里就可以考虑将数组中的中间值作为根节点 平衡二叉树:就是左右节点高度不大于1 树就可以想到递归与迭代, ...
- LeetCode 108. 将有序数组转换为二叉搜索树(Convert Sorted Array to Binary Search Tree) 14
108. 将有序数组转换为二叉搜索树 108. Convert Sorted Array to Binary Search Tree 题目描述 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索 ...
- Java实现 LeetCode 108 将有序数组转换为二叉搜索树
108. 将有序数组转换为二叉搜索树 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1. 示例: ...
- [LeetCode] 108. 将有序数组转换为二叉搜索树
题目链接 : https://leetcode-cn.com/problems/convert-sorted-array-to-binary-search-tree/ 题目描述: 将一个按照升序排列的 ...
- [LeetCode]105. 从前序与中序遍历序列构造二叉树(递归)、108. 将有序数组转换为二叉搜索树(递归、二分)
题目 05. 从前序与中序遍历序列构造二叉树 根据一棵树的前序遍历与中序遍历构造二叉树. 注意: 你可以假设树中没有重复的元素. 题解 使用HashMap记录当前子树根节点在中序遍历中的位置,方便每次 ...
- [leetcode-108,109] 将有序数组转换为二叉搜索树
109. 有序链表转换二叉搜索树 Given a singly linked list where elements are sorted in ascending order, convert it ...
- LeetCode:将有序数组转换为二叉搜索树【108】
LeetCode:将有序数组转换为二叉搜索树[108] 题目描述 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差 ...
- LeetCode(108):将有序数组转换为二叉搜索树
Easy! 题目描述: 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1. 示例: 给定有序数组 ...
- 108 Convert Sorted Array to Binary Search Tree 将有序数组转换为二叉搜索树
将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树.此题中,一个高度平衡二叉树是指一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1.示例:给定有序数组: [-10,-3,0,5,9], ...
- LeetCode刷题笔记-递归-将有序数组转换为二叉搜索树
题目描述 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1. 示例: 给定有序数组: [-10, ...
随机推荐
- 微信小程序-自定义tabbar配置及注意事项
1.选中要创建tabbar组件的目录,右键选定新建Componen 2.然后编写wxml代码和wxss样式 <cover-view class="tab-bar"> & ...
- echarts学习
一.安装与引入 1.安装npm install echarts --save 2.引入import * as echarts from 'echarts';(main.js里全局引入) 二.详细概念 ...
- adb命令之monkey使用
一.Monkey介绍Monkey是Android中的一个命令行工具,可在模拟器或实际设备中运行.通过向系统发送伪随机的用户事件流(例如按键.触摸屏.手势操作等),来实现对开发中的应用程序进行压力测试, ...
- mysql数据库连接客户端过多
flush hosts; 清理连接 查看当前连接数 show PROCESSLIST 与 show full PROCESSLIST (查看当前数据库所有连接,包含空闲连接与活跃连接) 查看最大连接数 ...
- Mac聚焦搜索无法搜索应用问题处理
问题描述 打开聚焦搜索(快捷键:command + space)后,发现安装的应用搜索不到. 参考文章 https://blog.csdn.net/fox_lori/article/details/1 ...
- 重试机制的实现(Guava Retry)
重试机制的实现 重试作用: 对于重试是有场景限制的,参数校验不合法.写操作等(要考虑写是否幂等)都不适合重试. 远程调用超时.网络突然中断可以重试.外部 RPC 调用,或者数据入库等操作,如果一次操作 ...
- Windows 10更新报错 0x8000ffff
Windows 10更新报错 0x8000ffff - Microsoft Community 那么您可用 "Windows 10 覆盖安装" 来修复,可参考以下步伐,连接里有视频 ...
- Oracle11g空表导出设置
alter system set deferred_segment_creation=false; select 'alter table '||table_name||' allocate exte ...
- SqlServer查看索引信息
sp_helpindex tablename
- 微信小程序学习记录
尺寸单位 rpx 常常以iphone6为开发基准, 1px = 2rpx,不同设备的比例是不同的: 小程序生命周期 和vue的生命周期很相似,不过小程序的生命周期和页面.组件的生命周期又又一点不一样 ...