LeetCode Convert Sorted List to Binary Search Tree(有序单链表转为平衡二叉树)

来源:互联网 发布:自动发卡源码正版 编辑:程序博客网 时间:2024/05/17 02:37

题意:给出一个有序的单链表,将其转换成平衡二叉树

思路:因为是有序的,所以可以将其分成两部分,前部分作为左子树,后部分作为右子树

代码如下:

 

class ListNode{    int val;    ListNode next;    ListNode(int x) { val = x; }}class TreeNode{    int val;    TreeNode left;    TreeNode right;    TreeNode(int x) { val = x; }}class Solution{    public TreeNode sortedListToBST(ListNode head)    {        if (null == head) return null;        if (null == head.next)        {            return new TreeNode(head.val);        }        ListNode slow = head, fast = head.next.next;        while (fast != null && fast.next != null)        {            fast = fast.next.next;            slow = slow.next;        }        TreeNode node = new TreeNode(slow.next.val);        node.right = sortedListToBST(slow.next.next);        slow.next = null;        node.left = sortedListToBST(head);        return node;    }}

0 0
原创粉丝点击