zoukankan      html  css  js  c++  java
  • 108.Convert Sorted Array to Binary Search Tree(Array; Divide-and-Conquer, dfs)

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

    思路:使用二分法,将list的中间节点作为根节点,然后分别处理list左半边及右半边,以此递归。

    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;
            TreeNode* root = new TreeNode(0);
            dfs(num,0,num.size()-1,root);          
            return root;
        }
        void dfs(vector<int> &num,int start, int end,TreeNode* treeNode)
        {
            int size = end-start+1;
            if(size == 1)
            {
                treeNode->val = num[start];
                return;
            }
            int mid = size/2 + start;
            treeNode->val = num[mid];      
            treeNode->left = new TreeNode(0);
            dfs(num,start,mid-1,treeNode->left);
            if(mid+1<=end)
            {
                treeNode->right = new TreeNode(0);
                dfs(num,mid+1,end,treeNode->right);
            }  
        }
    };
  • 相关阅读:
    iOS13 present VC方法
    青囊奥语
    三元九运的排盘
    三元九运 笔记
    青囊经
    金钱卦起卦
    易经中九二六三是什么意思
    用神
    六爻预测中的世爻,应爻分别代表什么
    div2-1519-D-Maximum Sum of Products-dp
  • 原文地址:https://www.cnblogs.com/qionglouyuyu/p/4853347.html
Copyright © 2011-2022 走看看