[Swift]LeetCode298. 二叉樹最長連續序列 $ Binary Tree Longest Consecutive Sequence

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公衆號:山青詠芝(shanqingyongzhi)
➤博客園地址:山青詠芝(https://www.cnblogs.com/strengthen/
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:http://www.javashuo.com/article/p-zhlxxadb-ku.html 
➤若是連接不是山青詠芝的博客園地址,則多是爬取做者的文章。
➤原文已修改更新!強烈建議點擊原文地址閱讀!支持做者!支持原創!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★html

Given a binary tree, find the length of the longest consecutive sequence path.node

 The path refers to any sequence of nodes from some starting node to any node in the tree along the parent-child connections. The longest consecutive path need to be from parent to child (cannot be the reverse).git

For example,github

   1
    \
     3
    / \
   2   4
        \
         5

Longest consecutive sequence path is 3-4-5, so return 3.微信

   2
    \
     3
    / 
   2    
  / 
 1

Longest consecutive sequence path is 2-3,not3-2-1, so return 2.spa


給定二叉樹,求最長連續序列路徑的長度。code

路徑是指沿着父子鏈接從某個起始節點到樹中任何節點的任何節點序列。最長的連續路徑必須是從父路徑到子路徑(不能是反向路徑)。htm

例如,blog

   1
    \
     3
    / \
   2   4
        \
         5

最長的連續序列路徑是3-4-5,因此返回3。get

   2
    \
     3
    / 
   2    
  / 
 1

最長的連續序列路徑是2-3,而不是3-2-1,因此返回2。


Solution:

 1 public class TreeNode {
 2     public var val: Int
 3     public var left: TreeNode?
 4     public var right: TreeNode?
 5     public init(_ val: Int) {
 6         self.val = val
 7         self.left = nil
 8         self.right = nil
 9     }
10 }
11 
12 class Solution {
13     func longestConsecutive(_ root: TreeNode?) -> Int {
14         var num:Int = 0
15         return helper(root,nil,num)
16     }
17     
18     func helper(_ root: TreeNode?,_ p: TreeNode?,_ res:Int) -> Int
19     {
20         var res = res
21         if root == nil {return res}
22         res = (p != nil && root!.val == p!.val + 1) ? res + 1 : 1
23         return max(res, max(helper(root?.left, root, res), helper(root?.right, root, res)))
24     }
25 }
相關文章
相關標籤/搜索