(1)问题
给定一个二叉树 root
,返回其最大深度。
二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。
示例 1:
输入:root = [3,9,20,null,null,15,7] 输出:3
(2)思路
第一种:递归法。
1、确定递归函数类型及参数,函数类型为int。参数为根节点。
2、确定终止条件为节点为空。
3、确定递归逻辑为:取迭代层数的最大值(迭代层数就代表深度),并加1(当前层)。
第二种:迭代法。层序遍历,只需要记录层数即可。
(3)解题流程(递归法)
1.按照递归的三要素创建递归函数。函数类型为int,参数为根节点。
2.节点为空时返回0。
3.递归获取左子树和右子树取它们递归层数的最大值并加1。
5.返回深度。
代码实现:
int getdepth(TreeNode* root)
{
if(root==nullptr) return 0;
int leftdepth = getdepth(root->left);
int rightdepth = getdepth(root->right);
int depth = max(leftdepth,rightdepth)+1;
return depth;
}
int maxDepth(TreeNode* root) {
return getdepth(root);
}