剑指 Offer 55 - I. 二叉树的深度
创始人
2024-05-29 17:07:40

剑指 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 。

提示:

  1. 节点总数<=10000节点总数 <= 10000节点总数<=10000

注意:本题与主站 104 题相同:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/


算法

(递归)

递归求解:

当前树的最大深度等于左右子树的最大深度加1。

复杂度分析

  • 时间复杂度:树中每个节点只被遍历一次,所以时间复杂度是O(n)O(n)O(n)。

  • 空间复杂度 : O(1)O(1)O(1)

C++ 代码

/*** 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;}
};

BFS C++代码

/*** 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;}
};

相关内容

热门资讯

27家!废止!福州仓山区教育局... 福州市仓山区教育局公告,27家民办机构办学许可证被废止。 根据《中华人民共和国民办教育促进法》...
《长江画传》新书发布,展现中国... 日前,《长江画传》新书发布暨“国家文化公园画传系列”出版座谈会在北京举行,这也代表着“国家文化公园画...
委政府驳斥美国关于委局势“不安... 据新华社加拉加斯1月10日电 委内瑞拉政府10日发表声明说,美国关于委局势“不安全”的说法不属实。声...
互动科学秀《疯狂实验室》在乌鲁... 1月10日晚,新疆乌鲁木齐市,沉浸式儿童剧——互动科学秀《疯狂实验室》在新疆人民剧场演出,悬浮沙滩球...
前谷歌、苹果研究员为New V...   资深人工智能研究员Andrew Dai表示,在谷歌DeepMind任职14年后,他近期已离职并将...