leetcode 算法题404 (简单099) 左叶子之和
-
题目介绍
计算给定二叉树的所有左叶子之和。
-
示例
3 / 9 20 / 15 7
在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24
-
解法一
/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } */ /** * @param {TreeNode} root * @return {number} */ var sumOfLeftLeaves = function(root) { let sum = 0 if(!root) { return sum; } let left = root.left, right = root.right; if(left) { if(left.left || left.right) { sum += sumOfLeftLeaves(left); } else { sum += left.val; } } if(right) { if(right.left || right.right) { sum += sumOfLeftLeaves(right); } } return sum; };
执行用时 : 84 ms, 在所有 JavaScript 提交中击败了51.41%的用户
内存消耗 : 34 MB, 在所有 JavaScript 提交中击败了58.33%的用户
-
解法二
/** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } */ /** * @param {TreeNode} root * @return {number} */ var sumOfLeftLeaves = function(root) { if(root === null) { return 0; } let temp = [root], sum = 0; while (temp.length) { let i = 0, tArray = []; while(i < temp.length) { let node = temp[i++]; let left = node.left; let right = node.right; if(left) { if(left.left || left.right) { tArray.push(left) } else { sum += left.val; } } if(right && (right.left || right.right)) { tArray.push(right) } } temp = tArray; } return sum; };
执行用时 : 88 ms, 在所有 JavaScript 提交中击败了51.41%的用户
内存消耗 : 34.7 MB, 在所有 JavaScript 提交中击败了30.56%的用户
上一篇:
IDEA上Java项目控制台中文乱码