zoukankan      html  css  js  c++  java
  • LeetCode——convert-sorted-list-to-binary-search-tree && convert-sorted-array-to-binary-search-tree

    Q:给定一个单链表,其中的元素按升序排序,请将它转化成平衡二叉搜索树(BST)
    A:

        public static TreeNode sortedListToBST(ListNode head) {
            if (head == null)
                return null;
            return toBST(head, null);
        }
    
        private static TreeNode toBST(ListNode head, ListNode tail) {
            if (head == tail)
                return null;
            // 申请两个指针,fast移动速度是low的两倍
            ListNode fast = head;
            ListNode slow = head;
            while (fast != tail && fast.next != tail) {
                fast = fast.next.next;
                slow = slow.next;
            }
            TreeNode root = new TreeNode(slow.val);
            root.left = toBST(head, slow);
            root.right = toBST(slow.next, tail);
    
            return root;
        }
    

    Q:给出一个升序排序的数组,将其转化为平衡二叉搜索树(BST).
    A:

        public TreeNode sortedArrayToBST(int[] nums) {
            if(nums==null||nums.length==0)
                return null;
            return sortedArrayToBST(nums,0,nums.length-1);
        }
     
        private TreeNode sortedArrayToBST(int[] nums, int left, int right) {
            if(right<left)
                return null;
            if(left==right)
                return new TreeNode(nums[left]);
            int mid=left+(right-left+1)/2;
            TreeNode root=new TreeNode(nums[mid]);
             
            root.left=sortedArrayToBST(nums,left,mid-1);
            root.right=sortedArrayToBST(nums,mid+1,right);
             
            return root;
        }
    
  • 相关阅读:
    【BZOJ】1486 [HNOI2009]最小圈
    【网络流24题】
    【网络流24题】魔术球问题
    【网络流24题】最小路径覆盖问题
    【BZOJ】1026 [SCOI2009]windy数
    【SPOJ】2319 BIGSEQ
    【SPOJ】1182 Sorted bit sequence
    虔诚的墓主人(bzoj 1227)
    Round Numbers(poj 3252)
    windy数(bzoj 1227)
  • 原文地址:https://www.cnblogs.com/xym4869/p/12517521.html
Copyright © 2011-2022 走看看