给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
思路:利用回溯法,先求左子树的最大深度,再求右子树的最大深度,整棵树的最大深度为两者最大值+1
var maxDepth = function(root) {
//方法一:通过层序遍历,求最大深度
// let resLength=0
// if(!root) return resLength
// let q=[]
// q.push(root)
// while(q.length!=0){
// resLength++
// let currentLevel=q.length
// for(let i=0;i<currentLevel;i++){
// node=q.shift()
// if(node.left) q.push(node.left)
// if(node.right) q.push(node.right)
// }
// }
// return resLength
//方法二:通过回溯法求最大深度
let depth
if(!root){
return 0
}
let left=maxDepth(root.left)
let right=maxDepth(root.right)
return depth=Math.max(left,right)+1
};
回溯算法的框架: