leetcode 算法题111 (简单027) 二叉树的最小深度
- 题目介绍
给定一个二叉树,找出其最小深度。
最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
说明: 叶子节点是指没有子节点的节点。
- 示例
给定二叉树 [3,9,20,null,null,15,7],返回它的最小深度 2.
3 / \ 9 20 / \ 15 7
- 解法一
/**
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/
/**
* @param {TreeNode} root
* @return {number}
*/
var minDepth = function(root) {
return getMinDepth(root, 0);
};
let getMinDepth = (node, depth) => {
if(node) {
if(node.left && node.right) {
return Math.min(getMinDepth(node.left, depth + 1), getMinDepth(node.right, depth + 1));
}
return getMinDepth(node.left || node.right, depth + 1);
}
return depth;
}
执行用时 : 80ms, 在所有 JavaScript 提交中击败了96.74%的用户
内存消耗 : 37.7MB, 在所有 JavaScript 提交中击败了6.17%的用户
- 解法二
/**
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/
/**
* @param {TreeNode} root
* @return {number}
*/
var minDepth = function(root) {
if(!root) {
return 0;
}
if(root.left && root.right) {
return Math.min(minDepth(root.left), minDepth(root.right)) + 1;
}
return minDepth(root.left || root.right) + 1;
};
执行用时 : 96ms, 在所有 JavaScript 提交中击败了55.43%的用户
内存消耗 : 37.1MB, 在所有 JavaScript 提交中击败了60.49%的用户