104 . 二叉树的最大深度
链接 :
. - 力扣(LeetCode)
思路 :
对于题意,可以拆分为 : ans = max(左子树的最大深度 , 右子树的最大深度) + 1 ;
原问题 : 计算整颗树的最大深度 ;
子问题 : 计算左右子树的最大深度 ;
代码实现 :
class Solution {
public int maxDepth(TreeNode root) {
if(root == null) return 0 ;
int lm = maxDepth(root.left) ;
int rm = maxDepth(root.right) ;;
return Math.max(lm, rm) + 1 ;
}
}
使用全局变量 :
class Solution {
int ans = 0;
void dfs(TreeNode *node, int cnt) {
if (node == nullptr) return;
++cnt;
ans = max(ans, cnt);
dfs(node->left, cnt);
dfs(node->right, cnt);
}
public:
int maxDepth(TreeNode *root) {
dfs(root, 0);
return ans;
}
};