108. Convert Sorted Array to Binary Search Tree

来源:互联网 发布:香港域名注册處 编辑:程序博客网 时间:2024/05/20 18:15

  • Convert Sorted Array to Binary Search Tree
    • 题目描述
    • 代码实现

108. Convert Sorted Array to Binary Search Tree

题目描述

把排好序的序列弄成平衡二叉树。

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

代码实现

使用DFS即可解决这个问题。建立头结点,

/** * 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* GetBSTNode(vector<int> nums, TreeNode *root) {        int nsz = nums.size(), mid = nsz >> 1;        if(!nsz) return NULL;        root->val = nums[mid];        if(mid > 0)  { TreeNode * newl = new TreeNode(0);             root->left = GetBSTNode(vector<int>(nums.begin(), nums.begin()+mid), newl); }        if(mid + 1 < nsz) { TreeNode *newr = new TreeNode(0);             root->right = GetBSTNode(vector<int>(nums.begin()+mid+1, nums.begin()+nsz), newr); }        return root;    }    TreeNode* sortedArrayToBST(vector<int>& nums) {        int nlen = nums.size();        if(!nlen) return NULL;        TreeNode *res = new TreeNode(0);        return GetBSTNode(nums, res);    }};
0 0
原创粉丝点击