转换有序链表成二叉搜索树
2014-03-08 21:06
351 查看
题目原型:
Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.
基本思路:
先将链表中的数存入数组,转化成有序数组转换为二叉搜索树,对于一个有序数组先找到中间值作为根,左边的为左子树,右边的为右子树,以此递归即可。
Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.
基本思路:
先将链表中的数存入数组,转化成有序数组转换为二叉搜索树,对于一个有序数组先找到中间值作为根,左边的为左子树,右边的为右子树,以此递归即可。
public TreeNode sortedListToBST(ListNode head) { if(head==null) return null; int len = 0; ListNode p = head; while(p!=null) { len++; p = p.next; } int[] num = new int[len]; p = head; int i = 0; while(p!=null) { num[i++] = p.val; p = p.next; } TreeNode root = sortedArrayToBST(num); return root; } public TreeNode sortedArrayToBST(int[] num) { TreeNode head = null; if(num.length==0) return null; head = creatBST(num, 0, num.length-1); return head; } public TreeNode creatBST(int[] num,int begin,int end) { if(begin>end) return null; else { int mid = (begin+end)/2; TreeNode parent = new TreeNode(num[mid]); parent.left = creatBST(num, begin, mid-1); parent.right = creatBST(num, mid+1, end); return parent; } }
相关文章推荐
- 怎样获取网页的SessionId
- codeforces round #234B(DIV2) B Inna and New Matrix of Candies
- dede用户登录时,跳转到提示页时报404错误
- C# Windows Phone 8 WP8 , 文字超连结到网页 免打程式码,Xaml就搞定 ! !
- 6个重构方法可帮你提升 80% 的代码质量
- dede用户登录时,跳转到提示页时报404错误
- DNS的分离解析
- 基于udp_socket通信的网络编程
- 优酷、腾讯、搜狐的三角恋
- [Windows Phone] 如何撰写连接 Wifi、蓝芽、网路、飞航模式的网路设定功能
- Tips for Unix/Linux
- XML Schema入门---4.2.1: XML Schema根元素
- DNS子域授权
- corosync与pacemaker实现nfs作为共享存储的Mysql高可用!
- 搭建通过 ssh 访问的 Git 服务器
- [Windwos Phone 8]多个按钮的共用事件
- 构建主从DNS服务器
- HDU 1576 A/B
- 关于在Ubuntu上面安装使用QQ
- Query上传插件Uploadify 3.2使用