再来选一道通过率最高的题目~
#104 Maximum Depth of Binary Tree
这是一道二叉树的题目,非常简单,只要DFS就可以啦。不过再次感慨一下要多多提高记事本编程能力呀。
题目要求就是找出从根节点到叶子节点最长路径的depth。不过有一个隐藏的trap,root可能为空哦,第一次就没有考虑到结果还要再提交一次=。=
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
private:
int max = 1;
void godown(TreeNode* node, int depth) {
if(node->left!=NULL) {
godown(node->left, depth+1);
}
if(node->right!=NULL) {
godown(node->right, depth+1);
}
if(node->left==NULL && node->right==NULL) {
if(depth > max) {
max = depth;
}
}
}
public:
int maxDepth(TreeNode* root) {
if (root==NULL) {
return 0;
}
godown(root,1);
return max;
}
};
当然BFS也是可以的啦,效率也一样,不过还要用容器好麻烦,还是DFS简单嘿嘿。
至于说用返回值加一加的方法写DFS我当然也会啊,不过还是习惯带着变量往下走好开心好开心,只是多定义了一个max而已没有实质差别咯,不要在意这些细节……