zoukankan      html  css  js  c++  java
  • [Swift]LeetCode404. 左叶子之和 | Sum of Left Leaves

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
    ➤微信公众号:山青咏芝(shanqingyongzhi)
    ➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/
    ➤GitHub地址:https://github.com/strengthen/LeetCode
    ➤原文地址:https://www.cnblogs.com/strengthen/p/9782487.html 
    ➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
    ➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

    Find the sum of all left leaves in a given binary tree.

    Example:

        3
       / 
      9  20
        /  
       15   7
    
    There are two left leaves in the binary tree, with values 9 and 15 respectively. Return 24.

    计算给定二叉树的所有左叶子之和。

    示例:

        3
       / 
      9  20
        /  
       15   7
    
    在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24

     1 /**
     2  * Definition for a binary tree node.
     3  * public class TreeNode {
     4  *     public var val: Int
     5  *     public var left: TreeNode?
     6  *     public var right: TreeNode?
     7  *     public init(_ val: Int) {
     8  *         self.val = val
     9  *         self.left = nil
    10  *         self.right = nil
    11  *     }
    12  * }
    13  */
    14 class Solution {
    15     var sum:Int = 0
    16     func sumOfLeftLeaves(_ root: TreeNode?) -> Int {
    17         if root == nil {return sum}
    18         if root!.left != nil
    19         {
    20             if root!.left!.left == nil && root!.left!.right == nil
    21             {
    22                 sum += root!.left!.val
    23             }
    24         }
    25         //递归
    26         sumOfLeftLeaves(root!.left)
    27         sumOfLeftLeaves(root!.right)
    28         return sum
    29     }
    30 }

    12ms

     1 /**
     2  * Definition for a binary tree node.
     3  * public class TreeNode {
     4  *     public var val: Int
     5  *     public var left: TreeNode?
     6  *     public var right: TreeNode?
     7  *     public init(_ val: Int) {
     8  *         self.val = val
     9  *         self.left = nil
    10  *         self.right = nil
    11  *     }
    12  * }
    13  */
    14 class Solution {
    15     func sumOfLeftLeaves(_ root: TreeNode?) -> Int {
    16         return sumOfLeftLeaves(root, false)
    17     }
    18     
    19     func sumOfLeftLeaves(_ node: TreeNode?, _ isLeft: Bool) -> Int {
    20         guard let node = node else { return 0 }
    21         if node.left == nil && node.right == nil && isLeft {
    22             return node.val
    23         }
    24         
    25         return sumOfLeftLeaves(node.left, true) + sumOfLeftLeaves(node.right, false)
    26     }
    27 }

    16ms

     1 /**
     2  * Definition for a binary tree node.
     3  * public class TreeNode {
     4  *     public var val: Int
     5  *     public var left: TreeNode?
     6  *     public var right: TreeNode?
     7  *     public init(_ val: Int) {
     8  *         self.val = val
     9  *         self.left = nil
    10  *         self.right = nil
    11  *     }
    12  * }
    13  */
    14 class Solution {
    15     var sum = 0
    16 
    17     func sumOfLeftLeaves(_ root: TreeNode?) -> Int {
    18         if root == nil || (root?.left == nil && root?.right == nil) {
    19             return 0
    20         }
    21         
    22         search(root)
    23         
    24         return sum
    25     }
    26     
    27     func search(_ root: TreeNode?) -> Void {
    28         if root == nil {
    29             return
    30         }
    31 
    32         if isLeave(root?.left) {
    33             let val = root?.left?.val ?? 0
    34             sum = sum + val
    35         } else {
    36             search(root?.left)
    37         }
    38         
    39         if isLeave(root?.right) {
    40             return
    41         } else {
    42             search(root?.right)
    43         }
    44     }
    45     
    46     func isLeave(_ root: TreeNode?) -> Bool {
    47         if root == nil {
    48             return true
    49         }
    50         
    51         if root?.left == nil && root?.right == nil {
    52             return true
    53         }
    54         
    55         return false
    56     }
    57 }

    16ms

     1 /**
     2  * Definition for a binary tree node.
     3  * public class TreeNode {
     4  *     public var val: Int
     5  *     public var left: TreeNode?
     6  *     public var right: TreeNode?
     7  *     public init(_ val: Int) {
     8  *         self.val = val
     9  *         self.left = nil
    10  *         self.right = nil
    11  *     }
    12  * }
    13  */
    14 class Solution {
    15     func sumOfLeftLeaves(_ root: TreeNode?) -> Int {
    16         var result = 0
    17         sumOfLeftLeaves(root, &result)
    18         return result
    19     }
    20     
    21     func sumOfLeftLeaves(_ root: TreeNode?, _ sum: inout Int) {
    22         guard let root = root else {
    23             return
    24         }
    25         
    26         if let left = root.left {
    27             if left.left == nil && left.right == nil {
    28                 sum += left.val
    29             } else {
    30                 sumOfLeftLeaves(left, &sum)
    31             }
    32         }
    33         
    34         sumOfLeftLeaves(root.right, &sum)
    35     }
    36 }

    24ms

     1 /**
     2  * Definition for a binary tree node.
     3  * public class TreeNode {
     4  *     public var val: Int
     5  *     public var left: TreeNode?
     6  *     public var right: TreeNode?
     7  *     public init(_ val: Int) {
     8  *         self.val = val
     9  *         self.left = nil
    10  *         self.right = nil
    11  *     }
    12  * }
    13  */
    14 class Solution {
    15     func sumOfLeftLeaves(_ root: TreeNode?) -> Int {
    16             var sum = 0
    17             toSumLeftTreeNode(root: root, sum: &sum)
    18             return sum
    19         }
    20         func toSumLeftTreeNode(root: TreeNode?, sum: inout Int){
    21             if root == nil {
    22                 return
    23             }
    24             if root?.left != nil && (root?.left?.left == nil && root?.left?.right == nil){
    25                 sum = sum + (root?.left?.val)!
    26             }
    27             toSumLeftTreeNode(root: root?.left, sum: &sum)
    28             toSumLeftTreeNode(root: root?.right, sum: &sum)
    29         }
    30 }
  • 相关阅读:
    阿里云ssh断开处理办法
    OSSIM安装使用教程(OSSIM-5.6.5)
    MySQL字符串列与整数比较
    Linux获取so/ko文件版本号教程
    Linux服务器后门自动化查杀教程
    最强半自动化抓鸡工具打造思路
    渗透测试报告中的那些名词解释
    ELK+MySQL出现大量重复记录问题处理
    Python3+SQLAlchemy不使用字段名获取主键值教程
    Python3+SQLAlchemy+Sqlite3实现ORM教程
  • 原文地址:https://www.cnblogs.com/strengthen/p/9782487.html
Copyright © 2011-2022 走看看