Convert Sorted List to Binary Search Tree LeetCode

来源:互联网 发布:qt网络编程 tcp连接 编辑:程序博客网 时间:2024/06/05 05:02


Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced 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 {    private ListNode current;    public int getListLength(ListNode head) {        if (head == null) {            return 0;        }        int size = 0;        ListNode temp = head;        while (temp != null) {            size++;            temp = temp.next;        }        return size;    }    public TreeNode getCurrentTreeNodeHelper(int size) {        if (size == 0) {            return null;        }        TreeNode left = getCurrentTreeNodeHelper(size / 2);        TreeNode root = new TreeNode(current.val);        current  = current.next;        TreeNode right = getCurrentTreeNodeHelper(size - 1 - size / 2);                root.left = left;        root.right = right;        return root;    }    public TreeNode sortedListToBST(ListNode head) {        current = head;        int size = getListLength(head);        TreeNode dummy = getCurrentTreeNodeHelper(size);                return dummy;    }}


0 0
原创粉丝点击