zoukankan      html  css  js  c++  java
  • Convert Sorted Array to Binary Search Tree

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

    思路:分治。将当前区间的中点给当前node,然后左区间中点为left,右区间中点为right。

    以下为AC代码。但我有一点不明白,fineNodes函数中,如果node的声明语句写成TreeNode node(nums[mid])然后函数最后返回&node就会出错,LeetCode上提示Runtime Error,但我本地运行是好用的。现在还没想明白这两种方法有什么区别。

    更新:出错的原因是因为这样定义的node对象在函数结束时就会被从内存中注销掉,不能再访问,因此会Runtime Error。但是通过new语句动态申请的内存,必需显式用delete语句释放内存才可以,因此这个程序中在函数结束后依然可以正确地访问。

     1 class Solution {
     2 public:
     3     TreeNode* fineNodes(vector<int>& nums, int leftInd, int rightInd)
     4     {
     5         if (leftInd > rightInd) return NULL;
     6         int mid = (leftInd + rightInd) >> 1;
     7         TreeNode *node = new TreeNode(nums[mid]);
     8         node->right = fineNodes(nums, mid + 1, rightInd);
     9         node->left = fineNodes(nums, leftInd, mid - 1);
    10         return node;
    11     }
    12     TreeNode* sortedArrayToBST(vector<int>& nums) {
    13         return fineNodes(nums, 0, nums.size() - 1);
    14     }
    15 };
  • 相关阅读:
    Introduction to XQuery in SQL Server 2005
    [译]Cassandra 架构简述
    冬日绘版实录
    网页实现串口TCP数据通讯的两种方案
    (转)感知哈希算法
    CoreParking
    单线程扫描电脑所有文件与并行计算扫描电脑所有文件所用时间?
    强名称程序集
    一些题(六)
    一些题(五)
  • 原文地址:https://www.cnblogs.com/fenshen371/p/4919253.html
Copyright © 2011-2022 走看看