剑指 Offer 55 - I. 二叉树的深度
难度:easy\color{Green}{easy}easy
输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。
例如:
给定二叉树 [3,9,20,null,null,15,7][3,9,20,null,null,15,7][3,9,20,null,null,15,7],
3/ \9 20/ \15 7
返回它的最大深度 3 。
提示:
注意:本题与主站 104 题相同:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/
递归求解:
当前树的最大深度等于左右子树的最大深度加1。
时间复杂度:树中每个节点只被遍历一次,所以时间复杂度是O(n)O(n)O(n)。
空间复杂度 : O(1)O(1)O(1)
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:int maxDepth(TreeNode* root) {if (!root) return 0;return max(maxDepth(root->left), maxDepth(root->right)) + 1;}
};
/*** 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 {
public:int maxDepth(TreeNode* root) {if (!root) return 0;queue q;q.push(root);int ans = 0;while (q.size()) {int n = q.size();while (n > 0) {auto t = q.front();q.pop();if (t->left) q.push(t->left);if (t->right) q.push(t->right);n--;}//遍历完一行ans ++;}return ans;}
};
上一篇:MSTP基础