求二叉树的深度
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()。