// 104. 二叉树的最大深度// 给定一个二叉树,找出其最大深度。// 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。// 说明: 叶子节点是指没有子节点的节点。// 示例:// 给定二叉树 [3,9,20,null,null,15,7],// 3// / \// 9 20// / \// 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}*/// 题解// 1.最大深度,考虑深度优先遍历// 2.每次遍历记录层级var maxDepth = function (root) {// 定义一个变量来记录层级let res = 0;const dfs = (n, l) => {if (!n) { return; }// 当为叶子节点时刷新if(!n.left && !n.right) {res = Math.max(res, l)}// 遇到子节点加1dfs(n.left, l + 1)dfs(n.right, l + 1)}// 层级初始化为1dfs(root, 1)return res};
时间复杂度:O(n)
空间复杂度:递归形成堆栈,(函数里面调用函数)看函数嵌套层数,这里就是二叉树的深度,最坏的情况就是所有值都是左节点,O(N),最好的情况是O(log N)
