程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

<LeetCode天梯>Day034 將有序數組轉換為二叉搜索樹(分治遞歸) | 初級算法 | Python

編輯:Python

每天進步一點點,就已經很棒很棒了,堅持堅持,不要太累,拒絕內卷,從每日一練開始,每天十分鐘,快樂生活一輩子!疫情依舊反復,大家帶好口罩啊~ 繼續繼續,來,今天和車神哥一起來提升自己的Python編程面試能力吧,刷天梯~

放上我拍的Photo吧!晚上去買了茶百道,獎勵自己一波,哈哈

每日推薦一首歌:一路向北——Jay Chou

以下為我的天梯積分規則

每日至少一題:一題積分+10分
若多做了一題(或多一種方法解答),則當日積分+20分(+10+10)
若做了三道以上,則從第三題開始算+20分(如:做了三道題則積分-10+10+20=40;做了四道題則積分–10+10+20+20=60)


初始分為100分
若差一天沒做題,則扣積分-10分(周六、周日除外注:休息
堅持!!!


初級算法

刷題目錄

鏈表

題干

給你一個整數數組 nums ,其中元素已經按 升序 排列,請你將其轉換為一棵 高度平衡 二叉搜索樹。

高度平衡 二叉樹是一棵滿足「每個節點的左右兩個子樹的高度差的絕對值不超過 1 」的二叉樹。

示例 1:

輸入:nums = [-10,-3,0,5,9]
輸出:[0,-3,9,-10,null,5]
解釋:[0,-10,5,null,-3,null,9] 也將被視為正確答案:


示例2:

輸入:nums = [1,3]
輸出:[3,1]
解釋:[1,3] 和 [3,1] 都是高度平衡二叉搜索樹。

分治遞歸

分析:

我們需要做的是轉換為一顆高度平衡的二叉搜索樹,題目中說道我們的數組nums是已經排完序號的,我們可以利用遞歸的思想,將每次取出數組中的中間值,然後將前一個數作為左節點,後一個數作為右子樹節點,這樣下去就完成了二叉樹的分配。我們可以用切片來遞歸取值,然後填寫到子樹種。今天的題不是很難,還有深度搜索可以試一試。

大佬的圖簡直就是心聲:

class Solution: def sortedArrayToBST(self, nums: List[int]) -> TreeNode: n = len(nums) if n == 0: return None mid = n // 2 # 平板除,取中位數 root = TreeNode(nums[mid]) root.left = Solution.sortedArrayToBST(self, nums[:mid]) root.right = Solution.sortedArrayToBST(self, nums[mid+1:]) return root


二叉樹,到這裡,也刷完了,耶!

這會兒才有點空,今天太累了,終於周末啦,休息休息,不對,明兒還得有個會議,啊!!!

明天我要睡到中午才起來!!!


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved