摘要:二分法找到數(shù)組的中位數(shù),置為樹的,遞歸找到前半段和后半段的中位數(shù),分別置為左右子樹。
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
二分法找到數(shù)組的中位數(shù),置為樹的root,遞歸找到前半段和后半段的中位數(shù),分別置為左右子樹。直到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; } }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/65563.html
摘要:解題思路平衡二叉樹,其實(shí)就是數(shù)組中間的數(shù)作為根,利用遞歸實(shí)現(xiàn)左子樹和右子樹的構(gòu)造。 Convert Sorted Array to Binary Search TreeGiven an array where elements are sorted in ascending order, convert it to a height balanced BST. 1.解題思路平衡二叉樹,...
摘要:我們可以用和兩個(gè)值來限定子樹在鏈表中的位置,通過遞歸的方式,深入找到最左邊,然后開始順序遍歷鏈表鏈表當(dāng)前節(jié)點(diǎn)作為全局變量,這樣無論遞歸在哪我們都能拿到,同時(shí)建樹。代碼先遞歸的計(jì)算左子樹創(chuàng)造根節(jié)點(diǎn)最后遞歸的計(jì)算右子樹 Convert Sorted List to Binary Search Tree Given a singly linked list where elements ar...
摘要:自己沒事刷的一些的題目,若有更好的解法,希望能夠一起探討項(xiàng)目地址 自己沒事刷的一些LeetCode的題目,若有更好的解法,希望能夠一起探討 Number Problem Solution Difficulty 204 Count Primes JavaScript Easy 202 Happy Number JavaScript Easy 190 Reverse Bi...
摘要:在線網(wǎng)站地址我的微信公眾號完整題目列表從年月日起,每天更新一題,順序從易到難,目前已更新個(gè)題。這是項(xiàng)目地址歡迎一起交流學(xué)習(xí)。 這篇文章記錄我練習(xí)的 LeetCode 題目,語言 JavaScript。 在線網(wǎng)站:https://cattle.w3fun.com GitHub 地址:https://github.com/swpuLeo/ca...我的微信公眾號: showImg(htt...
摘要:月下半旬攻略道題,目前已攻略題。目前簡單難度攻略已經(jīng)到題,所以后面會(huì)調(diào)整自己,在刷算法與數(shù)據(jù)結(jié)構(gòu)的同時(shí),攻略中等難度的題目。 Create by jsliang on 2019-07-30 16:15:37 Recently revised in 2019-07-30 17:04:20 7 月下半旬攻略 45 道題,目前已攻略 100 題。 一 目錄 不折騰的前端,和咸魚有什么區(qū)別...
閱讀 3469·2019-08-30 13:15
閱讀 1405·2019-08-29 18:34
閱讀 833·2019-08-29 15:18
閱讀 3490·2019-08-29 11:21
閱讀 3253·2019-08-29 10:55
閱讀 3707·2019-08-26 10:36
閱讀 1876·2019-08-23 18:37
閱讀 1832·2019-08-23 16:57