[LeetCode]Convert Sorted Array to Binary Search Tree
2015-07-27 10:11
417 查看
解题思路:
1,对一个有序的数组,其中间那个数 是 整颗树的根;
2,利用递归的思想,重复1的操作;
-------------------------------第一遍解题思路----------------
解题思路:
1,计算height
2,计算leafnumber
3,利用所有最底层的leaf都as left as posiible的特点
1,对一个有序的数组,其中间那个数 是 整颗树的根;
2,利用递归的思想,重复1的操作;
public class Solution { public TreeNode sortedArrayToBST(int[] nums) { return sortedArrayToBST(nums, 0, nums.length); } private TreeNode sortedArrayToBST(int[] nums, int start, int end){ if (start >= end) return null; int mid = (start + end) / 2; TreeNode node = new TreeNode(nums[mid]); node.left = sortedArrayToBST(nums, start, mid); node.right = sortedArrayToBST(nums, mid+1, end); return node; } }
-------------------------------第一遍解题思路----------------
解题思路:
1,计算height
2,计算leafnumber
3,利用所有最底层的leaf都as left as posiible的特点
/** * 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* sortedArrayToBST(vector<int>& nums) { TreeNode* root = NULL; int height = log2(nums.size()); int count = 0; for(int i = 0; i < height; ++i){ count += pow(2, i); } int leafNumber = nums.size() - count; int index = 0; build(root, height, leafNumber, nums, index); return root; } void build(TreeNode* &root, int height, int &leafNumber, vector<int>& nums, int &index){ if(index == nums.size()) return ; if (height == 0){ if (leafNumber > 0){ leafNumber--; root = new TreeNode(nums[index]); index++; } }else{ root = new TreeNode(0); build(root->left, height-1, leafNumber, nums, index); root->val = nums[index++]; build(root->right, height-1, leafNumber, nums, index); } return; } };
相关文章推荐
- Android控件开发之SeekBar
- C++学习总结(三)
- MPI程序 对等模式的 Jacobi迭代
- scala第二课
- poj 3057 Evacuation
- R语言与机器学习-学习笔记1(前言)
- Google Objective-C 风格指南
- hdu 1062(Text Reverse)
- 深入学习JavaScript: apply 方法 详解(转)
- php高负载架构 6台服务器抵挡4000万pv
- ThreadLocal
- 机房收费系统之组合查询
- Android系统版本以及屏幕相关参数的获取包括长宽,物理尺寸,px,dp,dpi,ppi等,
- Microsoft Office PPT 编程(VBA)学习 (不定时更新,正在学习 ing)
- ZOJ - 2781 Rounders
- 【php】在Windows2003下配置Apache2.4与php5.4
- 办公室颈椎运动
- winform windowsmediaplayer的属性
- 访问速度google的hosts文件【再版】
- 学习笔记-setContentView错误 找不到R.layout.activity