樹的性質判斷是樹的資料結構比較基本的操作,一般考到都屬於非常簡單的題目,也就是第一道入門題,面試中最好不能有問題,力求一遍寫對,不要給面試官任何挑刺機會。leetcode中關於樹的性質有以下題目:
maximum depth of binary tree
minimum depth of binary tree
balanced binary tree
same tree
symmetric tree
首先說說關於求樹的深度的題目,最簡單的是求最大深度
maximum depth of binary tree,一般都是用遞迴實現。思路很簡單,只需要對走到空結點返回0,然後其他依次按層遞增,取左右子樹中大的深度即可。
minimum depth of binary tree稍微複雜一點,主要是要注意因為是取左右子樹小的深度,但是有一種情況是不計入深度的,就是比如左子樹徹底為空時,這種情況我們不會認為深度就是0,因為左邊並沒有葉子,按照定義我們是要找葉子結點的最小深度。所以需要對於左右是否為空做乙個額外的判斷。
求樹的深度屬於簡單的題目,所以如果遞迴實現比較快的話,面試官可能會問非遞迴怎麼實現,如果有時間的話還是得練習一下哈,原理跟
leetcode總結 -- 樹的遍歷篇是一致的。
balanced binary tree是求深度的一道擴充套件題目,基本原理還是求深度。不過需要增加的環節是判斷他是不是平衡樹,因為深度是我們必須維護的量,如果選用額外的布林變數來維護是否為平衡樹也可以。不過這裡可以利用深度大於0的性質,可以將平衡的樹返回正常的深度值,而不平衡的則返回-1來進行區分,這樣相當於用乙個變數維護了想要的兩種性質,**實現也比較簡單。
same tree也是比較基礎的題目,和樹的遍歷時一樣的,只是對兩棵樹同時做相同的遍歷,然後進行一一比較,如果出現不同則返回false即可。
symmetric tree會稍微繞一點,不過想清楚跟
same tree還是差不多,第乙個不同點是要根據左右子樹比較,其實就是把左右子樹當成
same tree中的兩個樹即可。第二個不同點是在遞迴過程中對於結點的左右子樹進行互換比較,也就是左跟右比,右跟左比。
這篇總結主要提到了leetcode中求樹的一些基本性質的題目,這類題目比較簡單,屬於最低門檻題目,所以要力求bug free地一遍完成哈。
樹的性質篇
樹的性質判斷是樹的資料結構比較基本的操作,一般考到都屬於非常簡單的題目,也就是第一道入門題,面試中最好不能有問題,力求一遍寫對,不要給面試官任何挑刺機會。leetcode中關於樹的性質有以下題目 maximum depth of binary tree minimum depth of binary...
LeetCode總結 樹的求和篇
樹的求和屬於樹的題目中比較常見的,由於能夠有幾種變體,靈活度比較高,也能夠考察到對於樹的資料結構和遞迴的理解。一般來說這些題目就不用考慮非遞迴的解法了 儘管事實上道理是跟 leetcode總結 樹的遍歷篇 一樣的。僅僅要掌握了應該沒問題哈 leetcode中關於樹的求和有下面題目 path sum ...
LeetCode總結 矩陣篇
矩陣 一般是二維陣列 操作的題目在面試中考察基礎coding的時候比較常見,一般來說不帶有太多演算法思想,純粹就是二維陣列下標的操作。雖然比較簡單,不過還是比較能體現基本的實現能力。leetcode中關於矩陣操作的題目有以下幾個 spiral matrix spiral matrix ii rota...