zoukankan      html  css  js  c++  java
  • 【leetcode】Convert Sorted Array to Binary Search Tree (easy)

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

    有序数组变二叉平衡搜索树,不难,递归就行。每次先序建立根节点(取最中间的数),然后用子区间划分左右子树。

    一次就AC了

    注意:new 结构体的时候对于

    struct TreeNode {
         int val;
         TreeNode *left;
         TreeNode *right;
         TreeNode(int x) : val(x), left(NULL), right(NULL) {}
    };

    要用 TreeNode * root = new TreeNode(123);  与构造函数的形式要一致。

    #include <iostream>
    #include <vector>
    #include <algorithm>
    #include <queue>
    #include <stack>
    using namespace std;
    
    //Definition for binary tree
    struct TreeNode {
         int val;
         TreeNode *left;
         TreeNode *right;
         TreeNode(int x) : val(x), left(NULL), right(NULL) {}
    };
    class Solution {
    public:
        TreeNode *sortedArrayToBST(vector<int> &num) {
            if(num.empty())
            {
                return NULL;
            }
    
            int nr = num.size()/2;
            TreeNode * root = new TreeNode(num[nr]);
    
            vector<int> numl(num.begin(), num.begin() + nr);
            vector<int> numr(num.begin() + nr + 1, num.end());
            root->left = sortedArrayToBST(numl);
            root->right = sortedArrayToBST(numr);
    
            return root;
        }
    };
    
    int main()
    {
        Solution s;
        vector<int> num;
        num.push_back(1);
        num.push_back(2);
        num.push_back(3);
        num.push_back(4);
        num.push_back(5);
        num.push_back(6);
        num.push_back(7);
    
        TreeNode * ans = s.sortedArrayToBST(num);
    
        return 0;
    }
  • 相关阅读:
    具体解释协方差与协方差矩阵
    百度地图SDK for Android v2.1.3全新发布
    奇妙的等式
    Canny边缘检测及C++实现
    移动火柴问题
    移动火柴问题
    奇妙的等式 && 精妙的证明(二)
    奇妙的等式 && 精妙的证明(二)
    拉马努金恒等式
    拉马努金恒等式
  • 原文地址:https://www.cnblogs.com/dplearning/p/4127261.html
Copyright © 2011-2022 走看看