• Convert Sorted List to Binary Search Tree leetcode java


    题目

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

    题解

    之前做过一道是从sorted array转换到BinarySearchTree的,方法还是一样二分法。但是构造树的方法不是由顶至下了,是要由低至上的建立。

    代码如下:

     1     static ListNode h;
     2  
     3     public TreeNode sortedListToBST(ListNode head) {
     4         if (head == null)
     5             return null;
     6             
     7         h = head;
     8         
     9         int len = 0;
    10         ListNode temp = head;
    11         while(temp != null){
    12             len++;
    13             temp = temp.next;
    14         }   
    15         return sortedListToBST(0, len - 1);
    16     }
    17  
    18     public TreeNode sortedListToBST(int start, int end) {
    19         if (start > end)
    20             return null;
    21         int mid = (start + end) / 2;
    22         TreeNode left = sortedListToBST(start, mid - 1);
    23         TreeNode root = new TreeNode(h.val);
    24         root.left = left;
    25         h = h.next;
    26         TreeNode right = sortedListToBST(mid + 1, end);
    27         root.right = right;
    28  
    29         return root;
    30     }

    Reference: http://www.programcreek.com/2013/01/leetcode-convert-sorted-list-to-binary-search-tree-java/

  • 相关阅读:
    使用Lazy对构造进行重构后比较
    Ninject Lazy Load
    在 MVC 中使用 ninject Lazy Load的一个想法
    在Ninject 向构造参数中注入具有相同类型的参数
    关于 SimpleMembership 中 CreateDate 的问题
    ubuntu下谷歌浏览器字体模糊解决方案
    ubuntu双系统时间错乱
    WPS for Linux字体配置(Ubuntu 16.04)
    VS常见错误
    VMware虚拟机ubuntu显示屏幕太小解决办法
  • 原文地址:https://www.cnblogs.com/springfor/p/3884031.html
Copyright © 2020-2023  润新知