zoukankan      html  css  js  c++  java
  • 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/

  • 相关阅读:
    财务对账系统设计
    工作中快速成长的10个技巧
    越来越火的"中台"是什么
    基于token的多平台身份认证架构设计
    了解Scala 宏
    Scala反射(一)
    一文学会Scala
    Scala 隐式转换及应用
    如何看MySql执行计划explain(或desc)
    sun.misc.Unsafe 详解
  • 原文地址:https://www.cnblogs.com/springfor/p/3884031.html
Copyright © 2011-2022 走看看