博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Convert Sorted List to Binary Search Tree LeetCode
阅读量:6616 次
发布时间:2019-06-24

本文共 1441 字,大约阅读时间需要 4 分钟。

 

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;    }}

 

转载于:https://www.cnblogs.com/iwangzheng/p/5817501.html

你可能感兴趣的文章