摘要:二分法找到數組的中位數,置為樹的,遞歸找到前半段和后半段的中位數,分別置為左右子樹。
Problem
Given a sorted (increasing order) array, Convert it to create a binary tree with minimal height.
ExampleGiven [1,2,3,4,5,6,7], return
4 / 2 6 / / 1 3 5 7Note
二分法找到數組的中位數,置為樹的root,遞歸找到前半段和后半段的中位數,分別置為左右子樹。直到start = mid或end = mid為止。
Solution Recursivepublic 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); DequenodeStack = 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
摘要:解題思路平衡二叉樹,其實就是數組中間的數作為根,利用遞歸實現左子樹和右子樹的構造。 Convert Sorted Array to Binary Search TreeGiven an array where elements are sorted in ascending order, convert it to a height balanced BST. 1.解題思路平衡二叉樹,...
摘要:我們可以用和兩個值來限定子樹在鏈表中的位置,通過遞歸的方式,深入找到最左邊,然后開始順序遍歷鏈表鏈表當前節點作為全局變量,這樣無論遞歸在哪我們都能拿到,同時建樹。代碼先遞歸的計算左子樹創造根節點最后遞歸的計算右子樹 Convert Sorted List to Binary Search Tree Given a singly linked list where elements ar...
摘要:自己沒事刷的一些的題目,若有更好的解法,希望能夠一起探討項目地址 自己沒事刷的一些LeetCode的題目,若有更好的解法,希望能夠一起探討 Number Problem Solution Difficulty 204 Count Primes JavaScript Easy 202 Happy Number JavaScript Easy 190 Reverse Bi...
摘要:在線網站地址我的微信公眾號完整題目列表從年月日起,每天更新一題,順序從易到難,目前已更新個題。這是項目地址歡迎一起交流學習。 這篇文章記錄我練習的 LeetCode 題目,語言 JavaScript。 在線網站:https://cattle.w3fun.com GitHub 地址:https://github.com/swpuLeo/ca...我的微信公眾號: showImg(htt...
摘要:月下半旬攻略道題,目前已攻略題。目前簡單難度攻略已經到題,所以后面會調整自己,在刷算法與數據結構的同時,攻略中等難度的題目。 Create by jsliang on 2019-07-30 16:15:37 Recently revised in 2019-07-30 17:04:20 7 月下半旬攻略 45 道題,目前已攻略 100 題。 一 目錄 不折騰的前端,和咸魚有什么區別...
閱讀 3461·2019-08-30 13:15
閱讀 1400·2019-08-29 18:34
閱讀 822·2019-08-29 15:18
閱讀 3481·2019-08-29 11:21
閱讀 3247·2019-08-29 10:55
閱讀 3688·2019-08-26 10:36
閱讀 1869·2019-08-23 18:37
閱讀 1816·2019-08-23 16:57