劍指Offer的學習筆記(C#篇)-- 二叉樹的深度(詳講遞歸)

題目描述

輸入一棵二叉樹,求該樹的深度。從根結點到葉結點依次通過的結點(含根、葉結點)造成樹的一條路徑,最長路徑的長度爲樹的深度。

一 . 思惟發散函數

        藉助這個題目,我想用一個更好理解的方法說一說遞歸。藉助數學上的小括號來更好的理解遞歸,我作太小學生家教,記得這應該是小學四年級的題目(符號的計算順序)。直接上圖吧。spa

        也許寫的不夠嚴謹,但傳達的思想沒有錯,一樣採用的是舉例法,假設須要遞歸的函數是法 f(),遞歸一次就在相應的位置插上一個f(),所有搞定後就變成一個如上圖所示的那個了,接下來就是計算順序咯,不會的話,看一看小學四年級數學,應該會有幫助。code

二 . 代碼實現

class Solution
{
    public int TreeDepth(TreeNode pRoot)
    {
        // write code here
        //魯棒判斷
        if (pRoot == null)
        {
        return 0;
        }
        //左右遞歸
        int left = TreeDepth(pRoot.left);
        int right = TreeDepth(pRoot.right);
        //加一運算
        return System.Math.Max(left,right)+1;
    }
}
相關文章
相關標籤/搜索