Convert Sorted List to Binary Search Tree
来源:互联网 发布:java怎么实现导出word 编辑:程序博客网 时间:2024/05/21 23:31
Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.
思路:找到中间节点,中间节点是BST树根,然后中间节点的 左半部分 是树根的左子树, 右半部分是树根的右子树,依次递归下去。
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } *//** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { public TreeNode sortedListToBST(ListNode head) { int nlen = 0,i=0; ListNode p =head; while(p!=null) { nlen++; p=p.next; } if(nlen==0) return null; int[] num = new int[nlen]; while(head!=null) { num[i++]=head.val; head=head.next; } int mid = nlen/2; TreeNode root = new TreeNode(num[mid]); helper(num,0,mid-1,root,0); helper(num,mid+1,nlen-1,root,1); return root; } public void helper(int[] num,int i,int j,TreeNode cur,int flag) { if(i<=j) { int l = i, r = j; int mid = l+(r-l)/2; TreeNode tn = new TreeNode(num[mid]); if(flag==0) // left { cur.left=tn; helper(num,l,mid-1,tn,0); helper(num,mid+1,r,tn,1); } if(flag==1) // right { cur.right=tn; helper(num,l,mid-1,tn,0); helper(num,mid+1,r,tn,1); } } }}
0 0
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- convert sorted list to binary search tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- Convert Sorted List to Binary Search Tree
- 《算法概论》习题8.12题解
- 【Unity 3D学习】NGUI中Tab的实现
- OpenCv的xml读写(opencv教程大全)
- js中String对象
- 在O(1)时间内删除单链表结点
- Convert Sorted List to Binary Search Tree
- JAVA 线程等待
- SSH项目
- Cocos2d-x 3.x 图形学渲染系列十六
- 第三方支付集成
- C++处理Ctrl+C中断信号
- 2017最全的Java大致学习方向
- GitHub教程:注册、上传及项目管理
- hdu 6000 Wash 贪心