1.題目
給定乙個二叉樹,找出其最小深度。
二叉樹的最小深度為根節點到最近葉子節點的距離。
樣例
給出一棵如下的二叉樹:
1/ \
2 3
/ \
4 5
這個二叉樹的最小深度為 2
2.思路
先考慮空樹,返回0;
考慮是否為左右斜樹,則直接遞迴求深度即可;
考慮非空樹時,遞迴,在回溯過程中不斷比較左右子樹深度,每次取較小深度,繼續回溯……
同最大深度一樣,不要忘了加上根節點!!
3.**
/*** definition of treenode:
* class treenode
* }*/
class solution };
4.感想
覺得自己還是要區分好最小深度和最大深度,不能單純地使用遞迴。因為二叉樹的深度必須是根結點到葉子結點的距離,不能單純的比較左右子樹的遞迴結果返回較小值,因為對於有單個孩子為空的節點,為空的孩子會返回0,但這個節點並非葉子節點,故返回的結果是錯誤的。
之所以自己會在遍歷和求深度的題目上有許多問題是因為對於遞迴的過程掌握的不夠透徹!!希望自己通過做題找出理解上的薄弱點真正掌握遞迴,很多問題也就迎刃而解了!
lintcode練習 155 二叉樹的最小深度
二叉樹的最小深度為根節點到最近葉子節點的距離。是樣例 給出一棵如下的二叉樹 2 3 4 5 這個二叉樹的最小深度為 2 解題思路 利用了二叉樹的層次遍歷的思想,在每一層的遍歷中都判斷一下是否有葉子結點,如果有葉子結點,則返回該層深度。definition of treenode class tree...
LintCode 二叉樹的最小深度
題目描述 給定乙個二叉樹,找出其最小深度。二叉樹的最小深度為根節點到最近葉子節點的距離。樣例 給出一棵如下的二叉樹 1 2 3 4 5 這個二叉樹的最小深度為 2 做題思路 如果根結點為空,返回0,若左子樹為空,就用遞迴函式遍歷右子樹並加1,返回記錄深度,如果右子樹為空,就遍歷左子樹,遞迴返回記錄深...
Lintcode 二叉樹的最小深度
給定乙個二叉樹,找出其最小深度。二叉樹的最小深度為根節點到最近葉子節點的最短路徑上的節點數量。樣例 1 輸入 輸出 0樣例 2 輸入 輸出 3 解釋 1 2 3 它將被序列化為樣例 3 輸入 輸出 2 解釋 1 2 3 4 5 它將被序列化為python definition of treenode...