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);
            }  
        }
    };
  • 相关阅读:
    List(双向链表)
    Queue(队列)
    Queue(队列)
    Stack(栈)
    Stack(栈)
    Vector(容器)
    gitlab代码库
    Jenkins自动化部署平台
    Maven私服仓库
    VM架构设计文档初稿v0.01
  • 原文地址:https://www.cnblogs.com/qionglouyuyu/p/4853347.html
Copyright © 2011-2022 走看看