★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公衆號:山青詠芝(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 }