Leetcode: Convert Sorted Array to Binary Search Tree

来源:互联网 发布:ppsspp源码 编辑:程序博客网 时间:2024/06/05 12:52

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

比较简单。

/** * 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) {        return constructBST(num, 0, num.size() - 1);    }            TreeNode *constructBST(vector<int> &num, int start, int end) {        TreeNode *root = NULL;        if (start == end) {            root = new TreeNode(num[start]);        }        else if (start < end) {            int mid = (start + end) >> 1;            root = new TreeNode(num[mid]);            root->left = constructBST(num, start, mid - 1);            root->right = constructBST(num, mid + 1, end);        }                return root;    }};

====================第二次=====================

/** * 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) {        return constructBST(num, 0, num.size() - 1);    }        TreeNode *constructBST(const vector<int> &num, int start, int end) {        if (start > end) {            return NULL;        }                int mid = start + (end - start) / 2;        TreeNode *root = new TreeNode(num[mid]);        root->left = constructBST(num, start, mid - 1);        root->right = constructBST(num, mid + 1, end);                return root;    }};


0 0
原创粉丝点击