LeetCode 108. Convert Sorted Array to Binary Search Tree
来源:互联网 发布:搜狗 数据分析 面试 编辑:程序博客网 时间:2024/06/06 03:18
题目:
Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
思路:
将一个已排序的数组构成一个高度平衡的二叉排序树。每次中点为根结点,然后递归调用中点左边剩下的和右边剩下的元素。
代码1:
输出结果: 12ms
代码2:
没有代码1快。
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: TreeNode* sortedArrayToBST(vector<int>& nums) { return dfs(nums,0,nums.size()-1);//调用函数 } TreeNode* dfs(vector<int>& nums,int left,int right){ if(left>right){//如果left比right大,直接返回NULL return NULL; } int mid=(right-left+1)/2+left;//计算中点的索引 TreeNode* root=new TreeNode(nums[mid]);//将中点作为当前的根结点 root->left=dfs(nums,left,mid-1);//递归调用左子数组和右子数组 root->right=dfs(nums,mid+1,right); return root; }};
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: TreeNode* sortedArrayToBST(vector<int>& nums) { if(nums.size()==0){//如果当前nums的大小为0,直接返回NULL return NULL; } if(nums.size()==1){//如果当前nums的大小为1,将这个数构成一个新结点并返回 return new TreeNode(nums[0]); } int middle=nums.size()/2;//计算中点在数组中下标 TreeNode *root=new TreeNode(nums[middle]);//将中点作为当前的根结点 vector<int> lefttree(nums.begin(),nums.begin()+middle);//分别构成左右子数组 vector<int> righttree(nums.begin()+middle+1,nums.end()); root->left=sortedArrayToBST(lefttree);//递归调用来构成左子树和右子树 root->right=sortedArrayToBST(righttree); return root; }};
输出结果: 19ms
0 0
- LeetCode 108. Convert Sorted Array to Binary Search Tree
- [LeetCode]108.Convert Sorted Array to Binary Search Tree
- 108. Convert Sorted Array to Binary Search Tree Leetcode Python
- [Leetcode] 108. Convert Sorted Array to Binary Search Tree
- LeetCode --- 108. Convert Sorted Array to Binary Search Tree
- [leetcode] 108.Convert Sorted Array to Binary Search Tree
- LeetCode 108. Convert Sorted Array to Binary Search Tree
- 108. Convert Sorted Array to Binary Search Tree LeetCode
- [LeetCode]108. Convert Sorted Array to Binary Search Tree
- [LeetCode]108. Convert Sorted Array to Binary Search Tree
- [leetcode] 108. Convert Sorted Array to Binary Search Tree
- Leetcode 108. Convert Sorted Array to Binary Search Tree
- leetCode 108. Convert Sorted Array to Binary Search Tree JAVA
- LeetCode *** 108. Convert Sorted Array to Binary Search Tree
- leetcode 108. Convert Sorted Array to Binary Search Tree
- leetcode 108. Convert Sorted Array to Binary Search Tree
- LeetCode - 108. Convert Sorted Array to Binary Search Tree
- 【LeetCode】108. Convert Sorted Array to Binary Search Tree
- AndroidN 中vulkan 的支持
- 百度移动搜索优化指南2.0
- LeetCode刷题(C++)——Median of Two Sorted Arrays(Hard)
- poj2421 [java]Constructing Roads
- JMeter学习笔记11-Summary Report介绍
- LeetCode 108. Convert Sorted Array to Binary Search Tree
- Android 打造专属的下拉刷新 加载更多
- 南阳acm 第三十题 Gone Fishing翻译+思路
- mybatis实战教程(mybatis in action),mybatis入门到精通
- R-CNN阅读笔记
- 商品展示案例
- csu 1806(前向星+spfa+自适应辛普森)
- ReentrantLock在JDK中的使用,以及与传统方法的对比(ArrayBlockingQueue源码分析)
- 波动数列