首页 > 其他 > 详细

LeetCode Convert Sorted List to Binary Search Tree

时间:2014-11-03 23:52:00      阅读:319      评论:0      收藏:0      [点我收藏+]

Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.

 1 /**
 2  * Definition for singly-linked list.
 3  * public class ListNode {
 4  *     int val;
 5  *     ListNode next;
 6  *     ListNode(int x) { val = x; next = null; }
 7  * }
 8  */
 9 /**
10  * Definition for binary tree
11  * public class TreeNode {
12  *     int val;
13  *     TreeNode left;
14  *     TreeNode right;
15  *     TreeNode(int x) { val = x; }
16  * }
17  */
18 public class Solution {
19     public TreeNode sortedListToBST(ListNode head) {
20         ArrayList<ListNode> listNodes=new ArrayList<ListNode>();
21         if (head==null) return null;
22         ListNode node=head;
23         while (node!=null) {
24             listNodes.add(node);
25             node=node.next;
26         }
27         int middle=(listNodes.size()-1)/2;
28         TreeNode root =new TreeNode(listNodes.get(middle).val);
29         if (middle>0){
30             listNodes.get(middle-1).next=null;
31             root.left=sortedListToBST(listNodes.get(0));
32 
33         }
34         if (middle<listNodes.size()-1){
35             root.right=sortedListToBST(listNodes.get(middle+1));
36 
37         }
38         return root;
39 
40     }
41 }

 

LeetCode Convert Sorted List to Binary Search Tree

原文:http://www.cnblogs.com/birdhack/p/4072490.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!