ARTS打卡12-遞歸的形象解釋

Algorithm做算法題,Review點評英文文章,Tip總結技術技巧,Share做技術分享。每周打卡一次,這就是ARTS打卡。

1. 做算法題

Leetcode55. 二叉樹的深度

題目:輸入一棵二叉樹的根節(jié)點,求該樹的深度。從根節(jié)點到葉節(jié)點依次經(jīng)過的節(jié)點(含根、葉節(jié)點)形成樹的一條路徑,最長路徑的長度為樹的深度。

例如:

給定二叉樹 [3,9,20,null,null,15,7],

  3
 / \
 9  20
   /  \
  15   7

返回它的最大深度 3 。

解題思路:這題用遞歸再適合不過了,而遞歸算法不大符合常用思維方式。舉個例子以便于理解遞歸算法,而且便于代碼編寫。

電影院里黑漆漆的,你不知道自己正坐在第幾排,可以打開燈數(shù)一下,但會影響別人看電影。還有個辦法,問前面一排的人是坐在第幾排,然后加1就是自己的排數(shù)。但前面那位老兄和你一樣也不知道自己第幾排,沒關系,繼續(xù)向前問下去,直到第一排一定知道自己是第一排。前排反饋給后一排,后一排人加1再反饋給后排,以此類推,到了你的座位,就知道了自己的排數(shù)是前面一排加1。這就是遞歸算法。

解題代碼

# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
?
class Solution:
 def maxDepth(self, root: TreeNode) -> int:
 if root is None://如果節(jié)點本身為空,深度為0
 return 0

 if root.left is None and root.right is None:
 return 1//如果左右節(jié)點都為空,深度為1,到了“第一排”
 else:
 return max(self.maxDepth(root.left), self.maxDepth(root.right))+1//取左右子樹的高度,讓后加1就是本層的高度

2. 點評英文文章

文章What every developer should know about TCP簡單介紹了TCP協(xié)議如何三次握手,如何控制流量擁塞。TCP協(xié)議不僅是計算機通信的規(guī)約,還能探測網(wǎng)絡的帶寬和延時情況,并調節(jié)發(fā)送速度。

3. 技術技巧

很多人會買一本Linux基礎書作為工具書,遇到問題就去查工具書。其實Linux本身就自帶了很強大的幫助文件,man commandinfo command都是對命令的詳細解釋, command --help是命令自帶的簡易幫助。雖然這些幫助文件是英文的,看起來有一點費力,但英文解釋更容易理解和記憶命令。例如常用的刪除命令rm -rf,但如何理解命令中每一個字母的含義呢,rm是remove刪除的意思,-r是recursive遞歸的意思,-f是force強制的意思。

4. 技術分享

Linux中刪除文件時,可能出現(xiàn)權限不足的報錯,習慣性地就用sudo命令提權,再刪除文件。這容易誤解為用戶不具有該文件的寫權限,所以不能刪除。實際上刪除文件不是依靠用戶具有該文件的寫權限,而是用戶具有該文件所在目錄的寫權限。這都和Linux文件系統(tǒng)有關,文件的元信息存儲在所在目錄中。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容