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项目控制台中文乱码
