Convert Sorted List to Binary Search Tree - Leetcode

来源:互联网 发布:银魂在日本的人气 知乎 编辑:程序博客网 时间:2024/05/29 10:10

/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { val = x; next = null; } * } *//** * Definition for binary tree * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    public TreeNode sortedListToBST(ListNode head) {        if(head == null)           return null;           ListNode fast = head, slow = head, prev = slow;        if(head.next == null){           slow = head;           return new TreeNode(slow.val);        }        else if(head.next.next == null)  {            prev = slow;            slow = slow.next;}else{               while(fast.next!=null && fast.next.next!=null){               prev = slow;               slow = slow.next;               fast = fast.next.next;            }}            prev.next = null;            ListNode head2 = slow.next;            slow.next = null;TreeNode root = new TreeNode(slow.val);        root.left = sortedListToBST(head);        root.right = sortedListToBST(head2);        return root;    }}


分析:跟array 思路一样,然后因为是list,就用一个双速指针找到中值,然后及时切断前后连接。构造树。

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

0 0
原创粉丝点击