108. Convert Sorted Array to Binary Search Tree

题目:108. Convert Sorted Array to Binary Search Tree

Given an array where elements are sorted in ascending order, convert it to a height balanced BST.

题目分析:

刚开始拿到这个题目的时候,以为只要按照顺序构建一个二叉树就可以了。但是后来通过反馈的提示来看,并非如此。

这道题给出的序列是一组升序,按中序遍历可以得到。按照这个思路,数组中间的数为这个树的根节点,左边的序列为根节点的左子树,右边的序列为根节点的右子树。

同样使用递归的方法:

终结条件:节点为空(没有相应的数字)返回NULL;

                  该节点为叶节点(i==j) 返回单个节点;

                  该节点下面还有子节点(i < j) 递归。

代码:

 1 class Solution {
 2 public:
 3     TreeNode* build(int i, int j, vector<int>& nums)
 4     {
 5         if(i > j)
 6             return NULL;
 7         if(i == j)
 8             return new TreeNode(nums[i]);
 9         else{
10             int mid = (i + j + 1) / 2;
11             TreeNode* node = new TreeNode(nums[mid]);
12             node->left = build(i,mid-1,nums);
13             node->right = build(mid+1,j,nums);
14             return node;
15         }
16     }
17     TreeNode* sortedArrayToBST(vector<int>& nums) {
18       return build(0,nums.size()-1,nums);
19     }
20 };

 

转载于:https://www.cnblogs.com/MT-ComputerVision/p/7002414.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值