zoukankan      html  css  js  c++  java
  • 将有序数组转换为二叉搜索树 2020/7/3

    首先要清楚什么是二叉搜索树,数据结构课上讲过,就是父节点大于左节点小于右节点的二叉树,二叉搜索树的性质就是中序遍历后得到的数组为升序数组。

    具体的构建思路采用递归分分治的方法构造,根节点一定是中间的节点,确定好根节点后,根节点左边的为左儿子节点,右边的为右儿子节点。

    code:

    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Solution {
    public:
        TreeNode* sortedArrayToBST(vector<int>& nums) {
            int n=nums.size();
            if(n==0) return NULL;
            vector<int> left;
            vector<int> right;
            for(int i=0;i<n/2;i++)
                left.push_back(nums[i]);
            
            TreeNode *p=new TreeNode(nums[n/2]);
            
            for(int i=n/2+1;i<n;i++){
                right.push_back(nums[i]);
            }
            p->left=sortedArrayToBST(left);
            p->right=sortedArrayToBST(right);
            return p;
        }
    };
  • 相关阅读:
    转-文件批量重命名
    解决死锁之路(终结篇)
    Python批量修改文件名
    Android AudioTrack分析
    Android Audio介绍
    Android GNSS介绍
    Android HIDL介绍
    【vue】类和内联样式绑定
    【vue】计算属性
    svn post-commit不能同步
  • 原文地址:https://www.cnblogs.com/Accepting/p/13229100.html
Copyright © 2011-2022 走看看