/**
* Definition for a binary tree node.
* function TreeNode(val, left, right) {
* this.val = (val===undefined ? 0 : val)
* this.left = (left===undefined ? null : left)
* this.right = (right===undefined ? null : right)
* }
*/
/**
* @param {TreeNode} root
* @return {number}
*/
var maxDepth = function(root) {
let res = 0
const dfs=(node,level)=>{
if(!node){ return }
// console.log(node.val,level)
if(!node.right && !node.left){
res= Math.max(res,level)
}
dfs(node.left,level+1)
dfs(node.right,level+1)
}
dfs(root,1)
return res
};
时间复杂度:O(n) 空间复杂度:O(n) // 解题步骤:
1.先深度遍历输出
const dfs=(node)=>{
if(!node){ return }
// console.log(node.val)
dfs(node.left)
dfs(node.right)
}
dfs(root)
2.遍历输出每一层的层级
const dfs=(node,level)=>{
if(!node){ return }
// console.log(node.val,level)
dfs(node.left,level+1)
dfs(node.right,level+1)
}
dfs(root,1)
3.最后将最大值的输出
let res = 0
const dfs=(node,level)=>{
if(!node){ return }
// console.log(node.val,level)
res= Math.max(res,level)
dfs(node.left,level+1)
dfs(node.right,level+1)
}
dfs(root,1)
return res
4.在最后是叶子结点再去取最大值
let res = 0
const dfs=(node,level)=>{
if(!node){ return }
// console.log(node.val,level)
if(!node.right && !node.left){
res= Math.max(res,level)
}
dfs(node.left,level+1)
dfs(node.right,level+1)
}
dfs(root,1)
return res