Lintcode94 Binary Tree Maximum Path Sum solution 題解

【題目描述】


給出一棵二叉樹,尋找一條路徑使其路徑和最大,路徑可以在任一節點中開始和結束(路徑和爲兩個節點之間所在路徑上的節點權值之和)。

Given a binary tree, find the maximum path sum.

The path may start and end at any node in the tree.

【題目鏈接】

www.lintcode.com/en/problem/binary-tree-maximum-path-sum/

【題目解析】

首先分析一下對於指定某個節點爲根時,最大的路徑和有可能是哪些情況。第一種是左子樹的路徑加上當前節點,第二種是右子樹的路徑加上當前節點,第三種是左右子樹的路徑加上當前節點(相當於一條橫跨當前節點的路徑),第四種是隻有自己的路徑。

乍一看似乎以此爲條件進行自下而上遞歸就行了,然而這四種情況只是用來計算以當前節點根的最大路徑,如果當前節點上面還有節點,那它的父節點是不能累加第三種情況的。所以要計算兩個最大值,一個是當前節點下最大路徑和,另一個是如果要連接父節點時最大的路徑和。用前者更新全局最大量,用後者返回遞歸值就行了。

【參考答案】

www.jiuzhang.com/solutions/binary-tree-maximum-path-sum/



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章