leetcode-Convert Sorted Array to Binary Search Tree
来源:互联网 发布:天庭淘宝城txt全集下载 编辑:程序博客网 时间:2024/04/28 01:25
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) { // IMPORTANT: Please reset any member data you declared, as // the same Solution instance will be reused for each test case. TreeNode *root = sortedArrayToBST(num, 0, num.size()); return root; }private: TreeNode *sortedArrayToBST(vector<int> &num, int begin, int end) { if (begin >= end) return NULL; int middle = (begin + end) >> 1; TreeNode *root = new TreeNode(num[middle]); root->left = sortedArrayToBST(num, begin, middle); root->right = sortedArrayToBST(num, middle+1, end); return root; }};
其实begin+end可能会超出int范围造成溢出,《编程之美》上也有说到。改成如下:
要注意的是算术操作符的优先级大于移位操作符.
/** * 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) { // IMPORTANT: Please reset any member data you declared, as // the same Solution instance will be reused for each test case. TreeNode *root = sortedArrayToBST(num, 0, num.size()); return root; }private: TreeNode *sortedArrayToBST(vector<int> &num, int begin, int end) { if (begin >= end) return NULL; int middle = begin + ((end - begin) >> 1); TreeNode *root = new TreeNode(num[middle]); root->left = sortedArrayToBST(num, begin, middle); root->right = sortedArrayToBST(num, middle+1, end); return root; }};
- 【LeetCode】Convert Sorted Array to Binary Search Tree && Convert Sorted List to Binary Search Tree
- 【LeetCode】convert-sorted-link-to-binary-search-tree & convert-sorted-array-to-binary-search-tree
- Leetcode - Tree - Convert Sorted Array to Binary Search Tree
- *(leetcode) Convert Sorted Array to Binary Search Tree (tree)
- LeetCode[Tree]: Convert Sorted Array to Binary Search Tree
- LeetCode: Convert Sorted Array to Binary Search Tree
- [LeetCode]Convert Sorted Array to Binary Search Tree
- LeetCode Convert Sorted Array to Binary Search Tree
- [Leetcode] Convert Sorted Array to Binary Search Tree
- leetcode 11: Convert Sorted Array to Binary Search Tree
- Leetcode: Convert Sorted Array to Binary Search Tree
- [LeetCode] Convert Sorted Array to Binary Search Tree
- Leetcode 108 Convert Sorted Array to Binary Search Tree
- Leetcode 108 Convert Sorted Array to Binary Search Tree
- LeetCode Convert Sorted Array to Binary Search Tree
- [LeetCode]Convert Sorted Array to Binary Search Tree
- [Leetcode]Convert Sorted Array to Binary Search Tree
- [leetcode]Convert Sorted Array to Binary Search Tree
- TCP/IP
- 羽绒服穿出既动人又不冻人的美丽
- 解决PHP date调用警告:It is not safe to rely on the system's timezone settings
- 英剧《反击》中有意思的镜头
- hdu 2033 人见人爱A+B
- leetcode-Convert Sorted Array to Binary Search Tree
- Cleaning Robot-dfs+bfs+tsp
- cgiwrap
- 过河卒
- find the longest of the shortest-spfa删边
- 第一节 登录界面
- Glass Beads-最小表示法
- 第十四周——数组冒泡定义排序
- 显示代码原型