ÉèΪÊ×Ò³ ¼ÓÈëÊÕ²Ø

TOP

LeetCode Convert Sorted List to Binary Search Tree ½âÌⱨ¸æ
2015-07-20 17:34:49 À´Ô´: ×÷Õß: ¡¾´ó ÖРС¡¿ ä¯ÀÀ:1´Î
Tags£ºLeetCode Convert Sorted List Binary Search Tree ½âÌâ ±¨¸æ
Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.
´Ó¸ø¶¨µÄÓÐÐòÁ´±íÉú³Éƽºâ¶þ²æÊ÷¡£
½âÌâ˼·£º×îÈÝÒ×Ïëµ½µÄ¾ÍÊÇÀûÓÃÊý×éÉú³É¶þ²æÊ÷µÄ·½·¨£¬ÕÒµ½Öмä½Úµã×÷Ϊ¶þ²æÊ÷µÄroot½Úµã£¬È»ºó·Ö±ð¶Ô×óÓÒÁ´±íµÝ¹éµ÷Ó÷ֱðÉú³É×ó×ÓÊ÷ºÍÓÒ×ÓÊ÷¡£Ê±¼ä¸´ÔÓ¶ÈO(N*lgN)

AC´úÂ룺
public class Solution {
    ListNode getLeftNodeFromList(ListNode head) {
        ListNode next = head;
        ListNode current = head; 
        ListNode pre = head;

        while(next!=null) {
            next = next.next;
            if(next==null) {
                break;
            }
            next = next.next;
            if(next==null) {
                break;
            }
            pre = head;
            head = head.next;
        }
        return pre;
    }
    
    
    public TreeNode sortedListToBST(ListNode head) {
        if(head==null) {
            return null;
        }
        if(head.next==null) {
            return new TreeNode(head.val);
        }
        
        ListNode left = getLeftNodeFromList(head);
        ListNode mid = left.next;
        TreeNode root = new TreeNode(mid.val);
        left.next     = null;
        root.left     = sortedListToBST(head);
        root.right    = sortedListToBST(mid.next);
        return root;
    }
}


¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿ ¡¾·±Ìå¡¿¡¾Í¶¸å¡¿¡¾Êղء¿ ¡¾ÍƼö¡¿¡¾¾Ù±¨¡¿¡¾ÆÀÂÛ¡¿ ¡¾¹Ø±Õ¡¿ ¡¾·µ»Ø¶¥²¿¡¿
·ÖÏíµ½: 
ÉÏһƪ£ºhdu 4223 Dynamic Programming? (.. ÏÂһƪ£ºPOJ 1988 Cube Stacking (ÖÖÀಢ..

ÆÀÂÛ

ÕÊ¡¡¡¡ºÅ: ÃÜÂë: (ÐÂÓû§×¢²á)
Ñé Ö¤ Âë:
±í¡¡¡¡Çé:
ÄÚ¡¡¡¡ÈÝ:

¡¤Linuxϵͳ¼ò½é (2025-12-25 21:55:25)
¡¤Linux°²×°MySQL¹ý³Ì (2025-12-25 21:55:22)
¡¤Linuxϵͳ°²×°½Ì³Ì£¨ (2025-12-25 21:55:20)
¡¤HTTP Åc HTTPS µÄ²î„ (2025-12-25 21:19:45)
¡¤ÍøÕ¾°²È«±ØÐ޿ΣºÍ¼ (2025-12-25 21:19:42)