LeetCode 104. 二叉树的最大深度
题目描述
给定一个二叉树 root
,返回其最大深度。
二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。
示例
示例 1:
输入:root = [3,9,20,null,null,15,7] 输出:3
示例 2:
输入:root = [1,null,2] 输出:2
解法
1.后序遍历(DFS)
此树的深度和其左(右)子树的深度之间的关系。显然,此树的深度 等于 左子树的深度 与 右子树的深度中的 最大值 +1 。
- 终止条件: 当 root 为空,说明已越过叶节点,因此返回 深度 0 。
- 递推工作: 本质上是对树做后序遍历。
- 计算节点 root 的 左子树的深度 ,即调用 maxDepth(root -> left)。
- 计算节点 root 的 右子树的深度 ,即调用 maxDepth(root -> right)。
- 返回值: 返回 此树的深度 ,即 max(l_depth,r_depth) + 1。
class Solution {
public:int maxDepth(TreeNode* root) {if(root == nullptr) return 0;int l_depth = maxDepth(root -> left);int r_depth = maxDepth(root -> right);return max(l_depth,r_depth) + 1;}
};
时间复杂度O(N),空间复杂度O(N)