编程学习日志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()。

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