【学习打卡】第14天 数据结构和算法
2022/8/19 4:22:57
本文主要是介绍【学习打卡】第14天 数据结构和算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
二叉树的最大深度(leetcode - 104)
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
思路 (深度优先遍历)
- 声明变量deep记录节点的最大深度
- 深度优先遍历整棵树,并记录每个节点的层级,不断刷新deep
var maxDepth = function(root) { let deep = 0; const dfs = (n, l) => { if(!n) return; if(!n.left && !n.right) { deep = Math.max(deep, l) } if(n.left) dfs(n.left, l+1) if(n.right) dfs(n.right, l+1) } dfs(root, 1) return deep; };
// leetcode官方 var maxDepth = function(root) { if(!root) { return 0 }else{ const leftHeight = maxDepth(root.left); const rightHight = maxDepth(root.right); return Math.max(leftHeight, rightHight) + 1 } };
思路 (广度优先遍历)
- 声明一个栈
stack
和最大深度deep
- 把第一层级的节点(根节点)入栈
- 把第一层级的节点全部出栈,
deep
加1 - 把下一层级的节点入栈
- 把下一层级的节点全部出栈,
deep
加1 - 重复4、5步骤,直至stack为空,得到最大的deep
var maxDepth = function(root) { if(!root) { return 0; } const stack = [root]; let deep = 0; while(stack.length){ let len = stack.length; while(len > 0) { let n = stack.shift(); if(n.left) stack.push(n.left); if(n.right) stack.push(n.right); len-- } deep++; } return deep; };
这篇关于【学习打卡】第14天 数据结构和算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-24Java中定时任务实现方式及源码剖析
- 2024-11-24Java中定时任务实现方式及源码剖析
- 2024-11-24鸿蒙原生开发手记:03-元服务开发全流程(开发元服务,只需要看这一篇文章)
- 2024-11-24细说敏捷:敏捷四会之每日站会
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解