又重新开始刷题啦,这次按照类型来,先从二叉树开始
题目:
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树[3,9,20,null,null,15,7]
,3 / \ 9 20 / \ 15 7返回它的最大深度 3 。
思路:
整棵树的最大深度等于左右子树的最大深度取最大值,再加上根节点自己
可以定义一个递归函数,通过子树的最大高度推导出二叉树的最大深度
代码实现:
/**
* 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) {
if(!root){
return 0;
}
// 计算左子树的最大深度
let leftMax = maxDepth(root.left);
// 计算右子树的最大深度
let rightMax = maxDepth(root.right);
// 深度加1
const res = Math.max(leftMax, rightMax) + 1;
return res;
};