編程學習日誌2019-02-25(1)(**求二叉樹的深度**)

求二叉樹的深度
C++

class Solution {
public:
    int TreeDepth(TreeNode* root) {
        if (root == NULL) return 0;

        return max(TreeDepth(root->left), TreeDepth(root->right)) + 1;
    }
};

上面爲參考代碼
下面爲實際遇到的一些問題,
首先是root == NULL 的問題,NULL在C++11之後的版本是不推薦使用的,官方給出的解決辦法是利用nullptr,下面是Primer第五版原話:
過去的程序還會用到一個名爲NULL的預處理變量(preprocessor variable)來給指針賦值,這個變量在頭文件cstdlib中定義,它的值就是0。
當用到一個預處理變量時,預處理器會自動地將它替換成實際值,因此用NULL初始化指針和用0初始化指針是一樣的。在新標準下,現在C++程序最好使用nullptr,同時儘量避免使用NULL。

第二個問題是函數max()的問題,VS不支持max()
標準庫在頭中定義了兩個模板函數std::min() 和 std::max()。通常用它可以計算某個值對的最小值和最大值。

可惜在 Visual C++ 無法使用它們,因爲沒有定義這些函數模板。原因是名字min和max與<windows.h>中傳統的min/max宏定義有衝突。爲了解決這個問題,Visual C++ 定義了另外兩個功能相同的模板:_cpp_min() 和 _cpp_max()。我們可以用它們來代替std::min() 和 std::max()。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章