leetcode--ConvertSortedListtoBinarySearchTree
来源:互联网 发布:linux golang 1.8 编辑:程序博客网 时间:2024/05/29 03:36
思路:如果用数组可以直接取到中间值,因此可以用前序遍历的顺序来构建BST。但是链表如果要取中间值需要n/2的时间,因此采用中序遍历的顺序来构建BST。 这样root生成的顺序就和中序遍历的顺序一样,也就是list从前往后的顺序。
import java.util.List;/** * Created by marsares on 15/6/23. */public class ConvertSortedListtoBinarySearchTree { ListNode ln; public TreeNode sortedListToBST(ListNode head) { ln=head; return traversal(1,getLen(head)); } public TreeNode traversal(int start,int end){ if(start>end)return null; int mid=(start+end)/2; TreeNode left=traversal(start,mid-1); TreeNode root=new TreeNode(ln.val); ln=ln.next; TreeNode right=traversal(mid+1,end); root.left=left; root.right=right; return root; } public int getLen(ListNode head){ if(head==null)return 0; int len=1; while(head.next!=null){ len++; head=head.next; } return len; } public static void main(String[]args){ ConvertSortedListtoBinarySearchTree csltobst=new ConvertSortedListtoBinarySearchTree(); BinaryTreeSerialize bts=new BinaryTreeSerialize(); ListNode n0=new ListNode(1); ListNode n1=new ListNode(2); ListNode n2=new ListNode(3); ListNode n3=new ListNode(4); ListNode n4=new ListNode(5); n0.next=n1; n1.next=n2; n2.next=n3; n3.next=n4; System.out.println(bts.Serialize(csltobst.sortedListToBST(n0))); }}
0 0
- leetcode--ConvertSortedListtoBinarySearchTree
- ConvertSortedListToBinarySearchTree
- leetcode
- [leetcode]
- LeetCode
- leetcode
- leetcode
- leetcode:
- leetcode:
- LeetCode
- leetcode
- LEETCODE
- leetcode
- leetCode
- leetcode
- [leetcode]
- LeetCode
- leetcode
- 了解云计算的漏洞
- qt中的qrc文件和rcc文件
- 数据结构与算法分析 note
- JAVA执行bat文件和shell脚本文件
- 缓存机制
- leetcode--ConvertSortedListtoBinarySearchTree
- 不同晶振配置STM32 波特率
- Android横屏竖屏切换的问题
- C++ 12.4.2.默认实参与构造函数
- Nginx负载均衡
- Android 应用中十大导航设计错误
- typeof用法
- 伟大的程序猿是怎么样炼成的?
- 结构体简单排序-一级-二级