描述
求给定二叉树的最大深度,
最大深度是指树的根结点到最远叶子结点的最长路径上结点的数量。
实现:
1)方法一:递归
function maxDepth( root ) {
if(!root){
return 0;
}
return Math.max(maxDepth(root.left),maxDepth(root.right))+1;
}
因为递归遍历了每一个元素,所以其时间复杂度为O(N),空间复杂度为O(1)。
2)方法二:非递归
使用队列,每遍历一层,深度+1
function maxDepth( root ) {
if(!root){
return 0;
}
let q = [];
let res = 0;
q.push(root)
while(q.length){
res++; //在此处计数
let len = q.length;
for(let i=0;i<len;i++){
let r = q.shift();
if(r.left){
q.push(r.left)
}
if(r.right){
q.push(r.right)
}
}
}
return res;
}
时间复杂度为O(N),空间复杂度为O(N)。