1. 程式人生 > >《牛客網劍指offer38題》輸入一棵二叉樹,求該樹的深度

《牛客網劍指offer38題》輸入一棵二叉樹,求該樹的深度

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

結果:牛客網編譯通過

思路及程式碼:

//中心思想就是遞迴遍歷一遍二叉樹,定義一個全域性變數儲存最大路徑長度。
    int length  = 0; //最大路徑長度
    int TreeDepth(TreeNode* pRoot)
    {
     if(pRoot == NULL)
            return 0;
        int i = 1;
        whiTre(pRoot->left,i); //遍歷根節點的左節點,此時深度為1
        whiTre(pRoot->right,i);//右節點
        return length;
    }
    void whiTre(TreeNode* root, int i){  //遍歷二叉樹的遞迴函式
        if(root != NULL){ //如果當前節點不是空,繼續遍歷二叉樹
            i++;
            whiTre(root->left,i);
         whiTre(root->right,i);
        }
        else{   //遞迴結束條件就是當前節點為空了,遍歷到了葉子結點的下一個節點了,
           if(i>length) length = i;    //給最長路徑這個全域性變數賦值
        }
        return;
    }