leetcode--ConvertSortedArraytoBinarySearchTree
来源:互联网 发布:seo三人行 编辑:程序博客网 时间:2024/06/05 17:22
思路:取中位数作为当前的根节点,中位数左边的数组递归的计算左子节点,中位数右边的数组递归计算右子节点。
/** * Created by marsares on 15/6/15. */public class ConvertSortedArraytoBinarySearchTree { public TreeNode sortedArrayToBST(int[] nums) { if(nums==null)return null; if(nums.length==0)return null; return traversal(nums,null); } public TreeNode traversal(int[]nums,TreeNode root){ if(nums==null)return null; if(root==null){ root=new TreeNode(nums[medium(nums)]); return traversal(nums,root); } root.left=traversal(subnums(nums,0,medium(nums)),root.left); root.right=traversal(subnums(nums,medium(nums)+1,nums.length),root.right); return root; } private int medium(int[]nums){ if(nums.length%2==0)return nums.length/2-1; else return nums.length/2; } private int[] subnums(int[]nums,int start,int end){ if(start==end)return null; int[]nums2=new int[end-start]; int j=0; for(int i=start;i<end;i++){ nums2[j]=nums[i]; j++; } return nums2; } public static void main(String[]args){ ConvertSortedArraytoBinarySearchTree csatbst=new ConvertSortedArraytoBinarySearchTree(); BinaryTreeSerialize bts=new BinaryTreeSerialize(); int[]array={1,2,3,4,5}; TreeNode root=csatbst.sortedArrayToBST(array); System.out.println(bts.Serialize(root)); }}
0 0
- leetcode--ConvertSortedArraytoBinarySearchTree
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode
- leetcode:
- leetcode:
- LeetCode
- leetcode
- LEETCODE
- leetcode
- leetCode
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode:
- 从上往下打印二叉树
- Happy Problem【leetcode202】
- unity3D 音频播放
- css兼容问题
- poj 3259 Wormholes (BELLman—FOrd算法)(邻接矩阵表示)
- leetcode--ConvertSortedArraytoBinarySearchTree
- 天气预报---网络加载最新天气信息,截取JSON文件
- Hopcroft-Carp算法模板【二分图匹配】
- shiro权限项目中的简单应用
- 学习RecyclerView的一些东西
- Untiy Shader - 纹理贴图滚动
- 从输入网址到显示网页的全过程分析
- python网络编程学习笔记(9):数据库客户端
- leetcode--ConstructBinaryTreefromInorderandPostorderTraversal