原题链接:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/
解题思路:
- 递归遍历二叉树,用递归函数的一个参数标识当前层的深度,进入每一层时将当前层级标识+1。
- 遍历叶子节点时,将当前深度与已存储的最大深度对比,记录最大深度。
/**
* @param {TreeNode} root
* @return {number}
*/
var maxDepth = function (root) {
let max = 0; // 存储最大深度
// 递归遍历节点,并计算当前深度
function recursion(node, level) {
const newLevel = level + 1; // 进入递归时,将当前层级+1
// 当子节点都为空,表示当前节点为叶子节点
if (!node.left && !node.right) {
// 存储当前最大深度
max = Math.max(max, newLevel);
}
// 当左右节点存在时,才继续遍历
node.left && recursion(node.left, newLevel);
node.right && recursion(node.right, newLevel);
}
// 只有二叉树存在时,才进行遍历
root && recursion(root, 0);
return max;
};
/**
* @param {TreeNode} root
* @return {number}
*/
var maxDepth = function (root) {
let max = 0;
function traversal(node, level) {
if (!node) {
max = Math.max(max, level);
return;
}
const newLevel = level + 1;
traversal(node.left, newLevel);
traversal(node.right, newLevel);
}
traversal(root, 0);
return max;
};