题目:
给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点
示例:
给定二叉树 [3,9,20,null,null,15,7]
思考:
遍历二叉树的所有节点,最远的叶子节点就是二叉树的深度,可用递归来实现。因此我们需要知道每一个节点所在的深度,即该节点在第几层,深度最大的即为二叉树的深度。
代码:
/**
* 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 deepth = 0;//记录目前遍历的二叉树的最大深度
function searchDeepth(node,d){
if(!node){//若该节点不存在,则返回
return;
}
if(deepth<=d){//若该节点存在,则判断最大深度是否小于等于该节点的深度
deepth++;//若true,则最大深度加一
}
searchDeepth(node.left, d+1);//遍历该节点的左子树
searchDeepth(node.right, d+1);//遍历该节点的右子树
}
searchDeepth(root,deepth);
return deepth;
};