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

Posted 99xiaobei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode-108. 将有序数组转换为二叉搜索树相关的知识,希望对你有一定的参考价值。

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

本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 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. 将有序数组转换为二叉搜索树的主要内容,如果未能解决你的问题,请参考以下文章

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

[JavaScript 刷题] 树 - 将有序数组转换为二叉搜索树, leetcode 108

[JavaScript 刷题] 树 - 将有序数组转换为二叉搜索树, leetcode 108

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

LeetCode(108):将有序数组转换为二叉搜索树

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