题目:
题目截图:
解题步骤:
1.新建一个变量,记录最大深度
2.深度优先遍历整棵树,并记录每个节点的层级,同时不断刷新最大深度这个变量
3.遍历结束返回最大深度这个变量
代码:
/**
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/
/**
* @param {TreeNode} root
* @return {number}
*/
var maxDepth = function(root) {
let res = 0;
// n表示节点,l表示level,层级
const dfs = (n, l) => {
if (!n) return;
if (!n.left && !n.right) {
// 只需要在遍历到叶子节点时,去刷新res,不需要每个节点都去刷新res
res = Math.max(res, l);
}
dfs(n.left, l + 1);
dfs(n.right, l + 1);
}
dfs(root, 1);
return res;
};
时间复杂度分析:
时间复杂度是O(n),n是树的节点个数
空间复杂度分析:
空间复杂度是O(n)
怎么样,是不是很简单,你学会了吗 ?
如果这篇文章能够帮助到您,希望您不要吝惜点赞👍👍和收藏💖💖,您的支持是我继续努力的动力 💪💪!!!