给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
思路 (深度优先遍历)
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
加1deep
加1var 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; };