国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

[LeetCode] 108. Convert Sorted Array to Binary Sea

SKYZACK / 1048人閱讀

摘要:二分法找到數組的中位數,置為樹的,遞歸找到前半段和后半段的中位數,分別置為左右子樹。

Problem

Given a sorted (increasing order) array, Convert it to create a binary tree with minimal height.

Example

Given [1,2,3,4,5,6,7], return

     4
   /   
  2     6
 /     / 
1   3  5   7
Note

二分法找到數組的中位數,置為樹的root,遞歸找到前半段和后半段的中位數,分別置為左右子樹。直到start = mid或end = mid為止。

Solution Recursive
public class Solution {
    public TreeNode sortedArrayToBST(int[] A) {  
        return helper(0, A.length - 1, A);
    }  
    public TreeNode helper(int start, int end, int[]A) {
        if (start > end) return null;
        int mid = start + (end - start) / 2;
        TreeNode root = new TreeNode(A[mid]);
        root.left = helper(start, mid - 1, A);
        root.right = helper(mid + 1, end, A);
        return root;
    }
}
Iterative
class Solution {
    public TreeNode sortedArrayToBST(int[] nums) {
        if (nums == null || nums.length == 0) return null;
        TreeNode head = new TreeNode(0);
        
        Deque nodeStack = new LinkedList<>();
        Deque leftIndexStack = new LinkedList<>();
        Deque rightIndexStack = new LinkedList<>();
        
        nodeStack.push(head);
        leftIndexStack.push(0);
        rightIndexStack.push(nums.length-1);
        
        while (!nodeStack.isEmpty()) {
            TreeNode curNode = nodeStack.pop();
            int left = leftIndexStack.pop();
            int right = rightIndexStack.pop();
            int mid = left+(right-left)/2;
            curNode.val = nums[mid];
            
            if (left < mid) {
                curNode.left = new TreeNode(0);
                nodeStack.push(curNode.left);
                leftIndexStack.push(left);
                rightIndexStack.push(mid-1);
            }
            
            if (mid < right) {
                curNode.right = new TreeNode(0);
                nodeStack.push(curNode.right);
                leftIndexStack.push(mid+1);
                rightIndexStack.push(right);
            }
        }
        
        return head;
    }
}

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/65563.html

相關文章

  • [Leetcode-Tree] Convert Sorted Array to Binary Sea

    摘要:解題思路平衡二叉樹,其實就是數組中間的數作為根,利用遞歸實現左子樹和右子樹的構造。 Convert Sorted Array to Binary Search TreeGiven an array where elements are sorted in ascending order, convert it to a height balanced BST. 1.解題思路平衡二叉樹,...

    songze 評論0 收藏0
  • [Leetcode] Convert Sorted Array/List to Binary Sea

    摘要:我們可以用和兩個值來限定子樹在鏈表中的位置,通過遞歸的方式,深入找到最左邊,然后開始順序遍歷鏈表鏈表當前節點作為全局變量,這樣無論遞歸在哪我們都能拿到,同時建樹。代碼先遞歸的計算左子樹創造根節點最后遞歸的計算右子樹 Convert Sorted List to Binary Search Tree Given a singly linked list where elements ar...

    wpw 評論0 收藏0
  • leetcode部分題目答案之JavaScript版

    摘要:自己沒事刷的一些的題目,若有更好的解法,希望能夠一起探討項目地址 自己沒事刷的一些LeetCode的題目,若有更好的解法,希望能夠一起探討 Number Problem Solution Difficulty 204 Count Primes JavaScript Easy 202 Happy Number JavaScript Easy 190 Reverse Bi...

    alphahans 評論0 收藏0
  • 前端 | 每天一個 LeetCode

    摘要:在線網站地址我的微信公眾號完整題目列表從年月日起,每天更新一題,順序從易到難,目前已更新個題。這是項目地址歡迎一起交流學習。 這篇文章記錄我練習的 LeetCode 題目,語言 JavaScript。 在線網站:https://cattle.w3fun.com GitHub 地址:https://github.com/swpuLeo/ca...我的微信公眾號: showImg(htt...

    張漢慶 評論0 收藏0
  • LeetCode 攻略 - 2019 年 7 月下半月匯總(100 題攻略)

    摘要:月下半旬攻略道題,目前已攻略題。目前簡單難度攻略已經到題,所以后面會調整自己,在刷算法與數據結構的同時,攻略中等難度的題目。 Create by jsliang on 2019-07-30 16:15:37 Recently revised in 2019-07-30 17:04:20 7 月下半旬攻略 45 道題,目前已攻略 100 題。 一 目錄 不折騰的前端,和咸魚有什么區別...

    tain335 評論0 收藏0

發表評論

0條評論

SKYZACK

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<