1. 程式人生 > >(劍指offer)二叉樹的深度(遞迴與非遞迴版本)

(劍指offer)二叉樹的深度(遞迴與非遞迴版本)

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

一、遞迴版本;

若存在左子樹,則將左子樹深度加1;

若存在右子樹,則將右子樹深度加1;

若左右子樹均存在,則將左、右子樹深度均加1取最大值;

細節見程式碼:

int TreeDepth(TreeNode* pRoot)
    {
        if (pRoot == NULL)
        {
            return 0;
        }
        return max(1+TreeDepth(pRoot->left), 1 + TreeDepth(pRoot->right));
    
    }
二、個人感覺需要嘗試寫寫非遞迴,過程可以更清晰;