码迷,mamicode.com
首页 > 编程语言 > 详细

LeetCode-108. 将有序数组转换为二叉搜索树

时间:2018-10-16 01:49:58      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:ret   public   str   obs   sort   sorted   数组   树的高度   vector   

将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。

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

示例:

给定有序数组: [-10,-3,0,5,9],

一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树:

      0
     /    -3   9
   /   /
 -10  5


注:输入数组是有序数组,直接递归,但我没想出来,参考了别人的
代码:
 1 /**
 2  * Definition for a binary tree node.
 3  * struct TreeNode {
 4  *     int val;
 5  *     TreeNode *left;
 6  *     TreeNode *right;
 7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 8  * };
 9  */
10 class Solution {
11 public:
12     TreeNode* sortedArrayToBST(vector<int>& nums) { 
13         return sortedArrayToBST(nums, 0, nums.size() - 1); 
14     } 
15     TreeNode* sortedArrayToBST(vector<int>& nums, int l, int r) { 
16         if(l > r) { 
17             return NULL; 
18         } 
19         int mid = l + (r - l) / 2; 
20         TreeNode* newNode = new TreeNode(nums[mid]); 
21         newNode->left = sortedArrayToBST(nums, l , mid - 1); 
22         newNode->right = sortedArrayToBST(nums, mid + 1, r); 
23         return newNode; 
24     }
25 };

 

LeetCode-108. 将有序数组转换为二叉搜索树

标签:ret   public   str   obs   sort   sorted   数组   树的高度   vector   

原文地址:https://www.cnblogs.com/99xiaobei/p/9795269.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!