二叉树的最大深度
dfs
题解前递归
根节点是0,变量保存最大深度,如果当前深度大于最大深度就更新,返回最大深度
var maxDepth = function(root) { let maxDeep = 0 //最大深度 let dg = (root,deep = 0) => { //deep当前深度 if(root == null) return deep++ if(deep > maxDeep) maxDeep = deep dg(root.left,deep) dg(root.right,deep) } dg(root) return maxDeep };
题解后递归
叶子节点是0,递归到父节点 比较左子节点和右子节点的大小 + 1
var maxDepth = function(root) { if(root == null) return 0 let left = maxDepth(root.left) let right = maxDepth(root.right) return Math.max(left,right) + 1 };
bfs
遍历当前层所有节点,弹出,如果有子节点入栈,如果栈的长度大于0,深度 + 1
var maxDepth = function(root) { if(root == null) return 0 let arr = [root] let deep = 1 while(arr.length){ let len = arr.length for(let i = 0; i < len; i++){ let n = arr.shift() if(n.left) arr.push(n.left) if(n.right) arr.push(n.right) } if(arr.length > 0) deep++ } return deep };
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步