• 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 };
  • 相关阅读:
    Java的一些命名规范
    Java利用泛型实现堆栈
    Java 将二进制打印成十六进制
    String对象的一些基本方法
    Java异常使用指南
    JAVAEE期末项目------文章发布系统
    java14周
    java第11周
    java第八周作业
    java第七周----json
  • 原文地址:https://www.cnblogs.com/MT-ComputerVision/p/7002414.html
Copyright © 2020-2023  润新知